4.3 继承实现的基本原理

发布时间 2023-07-05 16:03:03作者: tianle1998

4.3.2 类加载过程

java中类的加载为动态加载,第一次使用时类才会被加载。
加载一个类时,若父类未被加载,则加载父类。
类的信息包括:类变量,类初始化代码,类方法,实例变量,实例初始化代码,实例方法,父类信息引用。

类初始化代码包括:静态初始化代码块,定义静态变量时的初始化语句。先执行父类的,再执行子类的,父类执行时,子类静态变量为默认值。
实例初始化代码包括:定义实例变量时的初始化语句,实例初始化代码块。

类初始化过程包括:分配内存保存类的信息,给类变量赋默认值,加载父类,设置父子关系,执行类初始化代码。

内存分为栈,堆,方法区。
栈存放函数局部变量,堆存放动态分配的对象,方法区存放类的信息。

4.3.3 对象创建的过程

创建对象过程包括:分配内存,对所有实例变量赋默认值,执行实例初始化代码。

分配的内存包括本类和所有父类的实例变量,但不包括任何静态变量。
实例初始化代码先执行父类的,后执行子类的。

寻找要执行的实例方法的时候,是从对象的实际类型信息开始查找的,找不到再查找父类类型信息。
动态绑定:根据对象的实际类型查找要执行的方法,子类型中找不到的时候再查找父类。
如果继承的层次比较深,则采用虚方法表记录动态绑定的方法地址。

4.3.4 变量访问的过程

对变量访问的过程是静态绑定的。