一、继承是从已有的类中派生出新的类,新的类能吸取已有类的数据属性和行为,并能扩展新的能力java
二、默认状况下,子类会找到父类之中的无参构造方法this
三、规律总结一:code
A:访问成员变量的原则:就近原则。 B:this和super的问题: this 访问本类的成员 super 访问父类的成员(能够理解为的) C:子类的全部构造方法执行前默认先执行父类的无参构造方法。 D:一个类的初始化过程: 成员变量进行初始化过程以下: 默认初始化 显示初始化 构造方法初始化
四、规律总结二:xml
A:一个类的静态代码块,构造代码块,构造方法的执行流程: 静态代码块 > 构造代码块 > 构造方法 B:静态的内容是随着类的加载而加载, 即:静态代码块的内容会优先执行。 C:构造代码块 在类中方法外出现(即类中的成员位置),把多个构造方法方法中相同的代码存放到一块儿,用于对象进行初始化, 每次调用构造方法都执行,而且在构造方法前执行。 C:子类的全部的构造方法默认都会去访问父类的无参构造方法。
五、规律总结三:对象
A:成员变量的问题 int x = 10; //成员变量x是基本类型 Student s = new Student(); //成员变量s是引用类型 B:一个类的初始化过程 先进行成员变量的初始化: 默认初始化 显示初始化 构造方法初始化 C:子父类的初始化(分层初始化) 先进行父类初始化,而后进行子类初始化。
class X { //成员变量(引用类型) Y b = new Y(); //无参构造方法 X() { System.out.print("X"); } } class Y { //无参构造方法 Y() { System.out.print("Y"); } } public class Z extends X { //成员变量(引用类型) Y y = new Y(); //无参构造方法 Z() { //super(); //它仅仅表示要先初始化父类数据,再初始化子类数据。 System.out.print("Z"); } public static void main(String[] args) { new Z(); //执行结果:YXYZ } }