8.8 下午 第13天下课 java
构造方法第一句总是:super(…)来调用父类对应的构造方法。所以,流程就是:先向上追溯到Object,然后再依次向下执行类的初始化块和构造方法,直到当前子类为止。
注:静态初始化块调用顺序,与构造方法调用顺序一样,不再重复。
**
*super关键字: 类似与this关键字(当前当前对象);super关键字代表父类对象
*1.可以利用super关键字代表父类对象访问父类的属性和方法。
* super.属性--->访问父类的属性
* super.方法名()--->调用父类的方法
*2.可以使用super关键字调用父类的构造函数,必须出现在构造函数的第一行。
*3.super不能与static混用。
*/
class Father{
int value;
public Father() {
System.out.println("Father无参构造方法被调用!");
}
public Father(int value) {
System.out.println("Father有参构造方法被调用!");
this.value=value;
}
public void setValue() {
value=100;
System.out.println("Father.value="+value);
}
}
class Child extends Father{
int value;
public Child() {
super();//利用super调用父类的构造方法,必须在第一行
System.out.println("Child的无参构造方法被调用了!");
}
public Child(int value) {
// super(value);//调用父类的有参构造方法
System.out.println("Child的有参构造方法被调用!");
this.value=value;
}
public void setValue() {
super.setValue();//使用super调用父类的方法
value=200;
System.out.println("Child.value="+value);
System.out.println("Father.value="+super.value);//使用super访问父类的属性
}
}
public class TestSuper {
public static void main(String[] args) {
Child child = new Child();
// Child child = new Child(300);
child.setValue();
}
}