java:super关键字

在这里插入图片描述

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.如果父类中既有有参构造又有无参构造,子类默认访问无参构造,编译不出错
父类只有有参构造可以使用时,子类必须显示的一个构造来调用父类的有参构造,并且调用父类构造方法要写在第一行
如果子类未调用父类的或者本类的构造器,父类又没有无参构造器,则编译出错

发布了18 篇原创文章 · 获赞 3 · 访问量 180

猜你喜欢

转载自blog.csdn.net/weixin_46037153/article/details/104425322