super关键字的使用和注意事项:
1、super仅代表当前类中的直接父类,无法使用super获取父类的父类中的成员
2、super后面不能再调用super
class GrandFu3{
int a = 10;
}
class Fu3 extends GrandFu3{
int a = 30;
}
class Son3 extends Fu3{
int a = 20;
public void fun1(){
System.out.println(a); //打印的是该类的变量a=20,先从自己的类中去找
System.out.println(super.a); //因为有super关键字,返回的是直接父类里面的变量a=30
// System.out.println(super.super.a);没有这种写法
GrandFu3 grandFu3 = new GrandFu3(); //想要调用最上级的父类,只能通过创建一个对象来进行调用
System.out.println(grandFu3.a); //输出的是a=10
}
}
public class ExtendsDemo5 {
public static void main(String[] args) {
Son3 son3 = new Son3();
son3.fun1();
}
}
super关键字可以调用父类的非私有的变量和方法
class Fu4{
public Fu4(String s){
System.out.println("这是父类中有参数的构造方法。。。。");
}
}
class Son4 extends Fu4{
public Son4(){ //无参的子类构造方法
//super()
super("数加");
System.out.println("这是子类的无参构造方法.....");
// super("数加"); //调用父类的有参构造
}
Son4(String s){ //有参的子类构造方法
super(s); //调用父类的有参构造方法
}
}
public class ExtendsDemo6 {
public static void main(String[] args) {
Son4 son4 = new Son4();
Son4 son5 =new Son4("数加");
}
}
标签:java,System,class,关键字,Son4,父类,super,public
From: https://www.cnblogs.com/ndmtzwdx/p/18430109