java继承关系中super关键字

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("数加");
    }
}
posted @ 2024-09-24 21:45  你的镁偷走了我的锌  阅读(23)  评论(0)    收藏  举报