public class Kk extends Kids{
public void test(){
super.salary=1;//可以用super追溯父类的父类的成员变量,可以一直向上追溯(如果有多层的父类)
super.employeed();//可以用super追溯父类的父类的成员方法
super.yearOld=2;//可以用super追溯父类的成员变量
super.printAge();//可以用super追溯父类的成员方法
}
1.子类中所有的构造器默认都会访问父类中空参数的构造器
public static void main(String[] args) {
Kids someKid=new Kids();//new Kids()是在调用kids类的默认无参构造方法,在这个过程中,就会使用父类的无参构造
…
写法显示出来
相当于:
public class ManKind {
//无参构造
public ManKind(){
System.out.println(“ManKind”);
}
…
public class Kids extends ManKind {
//子类中所有的构造器默认都会访问父类中空参数的构造器(无参数的构造)
public Kids(){
super();
}
2.在父类只有有参构造可以使用时,子类必须显示的一个构造来调用父类的有参构造,并且调用父类构造方法要写在第一行
public class ManKind {
//当存在显示的构造方法时,类就没有默认的无参构造,而是要使用显示的构造
public ManKind(int sex,int salary){
this.sex=sex;
this.salary=salary;
}
public class Kids extends ManKind {
public Kids(int sex, int salary) {
//在父类只有有参构造可以使用时,子类必须显示的一个构造来调用父类的有参构造,并且调用父类构造方法要写在第一行
super(sex, salary);
}
总结:
3.如果父类中既有有参构造又有无参构造,子类默认访问无参构造,编译不出错
父类只有有参构造可以使用时,子类必须显示的一个构造来调用父类的有参构造,并且调用父类构造方法要写在第一行
如果子类未调用父类的或者本类的构造器,父类又没有无参构造器,则编译出错