1.继承中构造方法的访问特点
/*
this:代表本类对象的引用。this关键字指向调用该方法的对象;
super:代表父类存储空间的标识(可以理解为父类对象引用)
*/
public class Zi extends Fu{
public Zi(){
super();//默认就是这个,可写可不写。一旦写了,默认的就只有一个。
System.out.println("Zi中无参构造方法被调用!");
}
public Zi(int age){
super();//默认就是这个,可写可不写。一旦写了,默认的就只有一个。
System.out.println("Zi中有参构造方法被调用!");
}
}
public class Fu {
public Fu(){
System.out.println("Fu中无参构造方法被调用!");
}
public Fu(int age){
System.out.println("Fu中有参构造方法被调用!");
}
}
/*
测试类
*/
public class Demo {
public static void main(String[] args) {
//创建对象,调用方法
Zi z=new Zi();
System.out.println("-----------------");
//调用带参数构造方法
Zi z2=new Zi(20);
}
}
说明:子类中的所有构造方法都会默认访问父类中无参数的构造方法。
why?
1)因为子类会继承父类中的数据,可能还会使用父类中的数据。所有,子类初始化之前,一定要先完成父类数据的初始化。
2)每一个子类构造方法第一条默认语句是super()
若父类中的无参数构造方法被注释掉,测试demo调用不到父类中的无参构造方法,就会报错。可以用super(age:20)调用有参构造方法。
若父类中无无参构造方法,只有有参构造方法的处理方法:
1)通过super关键字去显示的调用父类的带参构造方法;
2)在父类中自己提供一个无参构造方法。建议用这个。
2.继承中成员方法的访问特点
通过子类对象访问一个方法:首先在子类成员中找;再在父类中找