(一)什么是类和对象


类是对事物、逻辑、算法或概念的抽象。描述一类对象的行为和状态,类就是一个共性的集合,所有根据此类产生出的对象都具备相同的行为.类实际上是对象操作的模版,但是类不能够直接使用,必须通过实例对象来使用.(先有类才能有对象),对象是通过类产生的.
对象
对象是类的一个实例(对象不是找个女朋友),有状态和行为,对象是某一个性的产物.

图纸和房子 图纸就是类,房子就是对象(房子是存在的)

(二)构造方法

新建对象时,执行的一个特殊方法
在创建一个对象的时候,至少要调用一个构造方法
构造方法的名称必须与类同名,一个类可以有多个构造方法



(三)类的加载顺序

(1) 父类静态代码块(包括静态初始化块,静态属性,但不包括静态方法)
(2) 子类静态代码块(包括静态初始化块,静态属性,但不包括静态方法 )
(3) 父类非静态代码块( 包括非静态初始化块,非静态属性 )
(4) 父类构造函数
(5) 子类非静态代码块 ( 包括非静态初始化块,非静态属性 )
(6) 子类构造函数

(四)对象在内存中的存储结构


对象头

实例数据

填充数据

长度 内容 说明
32/64bit Mark Work hashCode,GC分代年龄,锁信息
32/64bit Class Metadata Address 指向对象类型数据的指针
32/64bit Array Length 数组的长度(当对象为数组时)