对Java语言和相关技术的回顾和进一步提升是我一直想做的一件事情,在此将复习和提升过程学到的东西简要记录,博客中相关的电子教案来自于bilibili尚硅谷的教程,只当作闲暇时的一点乐趣。
一、Java面向对象学习的主线:
- 属性、方法、构造函数;代码块、内部类、匿名类
- 2.OOP三大特性:封装性、继承性、多态性、(抽象性)
- 关键字的学习(super、this、static、final、abstract、interface、package、import.etc)
编程的两种范式,面向过程和面向对象。
- 前者强调功能行为,以函数为最小单位,考虑怎么做(算法)。
- 后者强调具备了功能的对象,以对象为最小单位,考虑由谁来做。
面向对象相对于面向过程,抽象程度更高。
二、OOP的基本元素:类和对象
- 类:类是对一类事物的描述,是抽象的、概念上的定义
- 对象:对象是实际存在的该类事物的每个个体,因而也称为实例(instance)。
- 对象属性(field):对应类中的成员变量
- 对象行为(Method):对应类中的成员方法
- 当使用一个类创建多个对象时,每个对象都拥有独立的一套属性(非static情况下),之间是不相互影响的。
- Java对象的赋值默认情况下是传引用的,比如说:
Class Animal{
//Animal类的定义
}
Animal A = new Animal();
//这样的操作使得A、B指向堆的同一地址空间,对B的改变也会影响到A
Animal B = A;
- 类中声明的成员变量都是有默认初始值的,这意味着有默认构造方法存在:
类型 | 默认初始值 |
---|---|
整型(byte, short, int, long) | 0 |
浮点型(short ,double) | 0.0 |
字符型(char) | 0 |
布尔型(boolean) | false |
引用数据类型(类、数组、接口) | null |
- 类的成员变量与局部变量的不同
三、对象的内存解析
具体到编程的例子,看下面这张图:
注意:
- 对象的引用,也就是对象在堆中的地址是保存在栈中的,它是局部变量。
- 具体对象的属性值是保存在堆中的。
- 当发生对象的赋值时,本质是引用(指针)的赋值,p3和p1指向了同一个地址空间。