“ super ”关键字的多种使用
思考💡 super是什么?
super关键字主要的功能是:完成子类调用父类中的内容,也就是调用父类中的属性或方法。
super的多种用法:
1、super . 父类成员变量
2、super . 父类成员方法(参数)
3、super(参数) // 调用父类构造函数
注意:③只能写在子类的构造方法中,如果一个类没有显示的一个父类,则仍然使用 super() 调用的话,调用的则是顶级分类 Object 父类
代码详解:
//先创建一个父类
public class F {
//定义父类成员变量numa
protected int numa = 20;
//定义父类成员方法father()
public void father() {
System.out.println("father方法获取变量值::"+numa);
}
//定义一个参数和有参构造函数
String id;
F(String id) {
this.id = id;
}
}
//再创建一个子类 并继承 父类
public class Z extends F {
//定义子类成员变量numb
protected int numb = 30;
//定义子类成员方法son()
public void son() {
System.out.println("子类中获取F(父类)中的成员变量: "+super.numa);
}
//覆盖重写父类的成员方法father()
@Override
public void father() {
//调用父类的成员方法
super.father();
System.out.println("————“这行是覆盖重写father方法后的自定义打印文字”————");
}
//创建子类的构造方法
String name;
Z(String id, String name) {
//调用父类的构造方法
super(id);
//添加子类独有的属性
this.name = name;
}
//创建display()进行控制台输出
void display() {
System.out.println("ID:"+id+"————"+ "姓名:" + name);
}
}
//这是一个测试类
public class Test {
public static void main(String[] args) {
//创建一个子类对象 【方便调用】
Z zi = new Z("007", "张三");
//用子类对象调用子类son()方法
zi.son();
//用子类对象调用父类father()方法
zi.father();
//用子类对象调用display()方法输出
zi.display();
}
}
总结:
步骤总结:
先创建好继承关系之后
①super . 父类成员变量
在父类中定义变量 numa 再进子类 son 方法中运用 super . numa 继承了父类中定义的变量 numa 。
②super . 父类成员方法(参数)
运用覆盖重写在子类中重新定义 father()
如代码所示:super.father(); 调用父类的成员方法,例如打印结果的第二行。随后在覆盖重写 father()方法。
注意:在子类中如果仍然使用同名方法的话需要覆盖重写这个方法
③super(参数) // 调用父类构造函数
如代码所示: super(id); 调用父类的有参构造方法,并给其附上子类独有的属性 name
控制台打印结果:
③ 的结果如下图所示: