Java基础(面向对象)

1,面向过程思想和面向对象思想

举个简单例子,今天下午我饿了,想出去买点东西吃,发现下雨了,我于是乎又撤回来了。我要自己出去买东西,首先需要走到商店,挑选商品、付钱,走回来、吃这几个流程,这就是面向过程思想。由于下雨我也就没去,我用微信在学校的零食外卖公众号速猴上定了零食,然后就给送了过来,这个过程可以看做面向对象思想,速猴可以看做一个对象,能为我提供商品,我使用速猴就可以完成我要吃零食的需求。

面向过程:强调的是过程,所有事情都需要自己完成。

面向对象:是一种更符合我们思想习惯的思想(懒人思想,我把事情自己不做,交给别人去做)可以将复杂的事情简单化(对使用者来说简单了,对象里面还是很复杂的)将我们从执行者变成了指挥者角色发生了转换。

2,栈、堆、方法区

JAVA的JVM的内存可分为3个区:堆(heap)、堆栈(stack)和方法区(method)

1,堆区:

提供所有类实例和数组对象存储区域

jvm只有一个堆区(heap)被所有线程共享,堆中不存放基本类型和对象引用,只存放对象本身

2,栈区:

每个线程包含一个栈区,栈中只保存基础数据类型的对象和自定义对象的引用(不是对象),对象都存放在堆区中

每个栈中的数据(原始类型和对象引用)都是私有的,其他栈不能访问。

3,方法区:

又叫静态区,跟堆一样,被所有的线程共享。方法区包含所有的class和static变量。

方法区中包含的都是在整个程序中永远唯一的元素,如class,static变量。

运行时常量池都分配在 Java 虚拟机的方法区之中

/*

 *手机类:

 * 成员变量:品牌,价格,颜色...

 * 成员方法:打电话,发短信...

 */

public class Phone {

    //品牌

    String brand;

    //价格

    int price;

    //颜色

    String color;

    //打电话

    public void call(String name) {

        System.out.println("给"+name+"打电话");

    }

    //发短信

    public void sendMessage() {

        System.out.println("群发短信");

    }

}

/*

 *手机类的测试类

 */

public class PhoneDemo {

    public static void main(String[] args) {

    //创建对象

    Phone p = new Phone();

    //输出成员变量值

    System.out.println("品牌:"+p.brand);//null

    System.out.println("价格:"+p.price);//0

    System.out.println("颜色:"+p.color);//null

    System.out.println("------------");

    //给成员变量赋值

    p.brand = "锤子";

    p.price = 2999;

    p.color = "棕色";

    //再次输出成员变量值

    System.out.println("品牌:"+p.brand);//锤子

    System.out.println("价格:"+p.price);//2999

    System.out.println("颜色:"+p.color);//棕色

    System.out.println("------------");

    //调用成员方法

    p.call("林青霞");

    p.sendMessage();

    }

}


Java基础(面向对象)_第1张图片
对象内存图

3,面向对象三大特征

封装、继承、多态

1,封装:通过关键字private实现

A:封装概述

是面向对象三大特征之一

是面向对象编程语言对客观世界的模拟,客观世界里成员变量都是隐藏在对象内部的,外界无法直接操作和修改。

B:封装原则:

将不需要对外提供的内容都隐藏起来。

把属性隐藏,提供公共方法对其访问。

成员变量private,提供对应的getXxx()/setXxx()方法

C:好处:

通过方法来控制成员变量的操作,提高了代码的安全性

把代码用方法进行封装,提高了代码的复用性。,

2,继承:通过关键字extends实现

父亲的财产是父亲辛苦奋斗而来的,儿子不费吹灰之力,生下来就有了,就因为他们之间是父子关系。在现实生活中,继承一般是指的子女继承父辈的财产,在程序中,继承描述的是事物之间的所属关系,通过继承可以使多种事物之间形成一种关系体系, 在 Java 中,类的继承是指在一个现有类的基础上去构建一个新的类.构建出来的新类被称作子类,现有类被称作父类,子类 `无条件` 拥有父类全部可继承的属性和方法.继承通过 "extends 关键字"实现,在 Java 中,类只支持单继承,不允许多重继承,也就是说一个类只能有一个直接父类。

A类是 B 类的子类, 也称为派生类。   Derived class

B类是 A 类的父类, 也称为基类、超类。Super class

3,多态:父类引用指向子类对象,父类引用调用方法,执行的是子类重写的方法。

多态概述:

在设计一个方法时,通常希望该方法具备一定的通用性,在同一个方法中,这种由于参数类型不同而导致执行效果各异的现象就是多态。, 在Java中为了实现多态,允许使用一个父类类型的变量来引用一个子类类型的对象,根据被引用子类对象特征的不同,得到不同的运行结果。

多态性:多态基础是继承。 类之间先有继承关系之后,才会产生多态的形式。

多态三要素:继承、重写、向上转型。

程序中的多态:同一个行为,对于传入不同的 `对象` 而言,具有完全不同的表现形式。

你可能感兴趣的:(Java基础(面向对象))