Java super和super()


super和super()

super代指父類,而super()代指父類無參構造函數。具體用法如下:

用super在子類中得到父類的成員變量

//父類代碼
public class Fu {
    int age =50;
}

//子類代碼
public class Zi extends Fu{
    int age = 22;

    public void show() {
        int age = 0;

        System.out.println(age);      
        System.out.println(this.age); 
        System.out.println(super.age);
    }
}

//測試類代碼
public class Demo {
    public static void main(String[] args) {
        Zi zi1 = new Zi();
        zi1.show();
    }
}

輸出結果如下:

結論

1、子類中的輸出的age采取就近原則:局部變量>成員變量>父類成員變量
2、this指代本類,super指代父類


接下來說說輸出的第一行“父類無參”是咋回事

用super()在子類中得到父類的構造函數

始終記得沒有構造方法默認無參,自定義構造方法就沒有默認的無參了(值得細品)

//父類代碼
public class Fu {
    int age =50;

    public Fu() {
        System.out.println("父類無參");
    }

    public Fu(int age) {
        System.out.println("父類有參");
    }
}

//子類代碼
public class Zi extends Fu{
    int age = 22;
    public Zi() {
        super(12);
        System.out.println("子類無參");
    }

    public Zi(int age) {
        super();//默認調用父類無參構造函數,可不寫!!(不寫的前提:父類 至少有   無參構造函數)
        System.out.println("子類有參");
    }
}

//測試類代碼
public class Demo {
    public static void main(String[] args) {
        Zi zi1 = new Zi();

        Zi zi2 = new Zi(20);
    }
}

輸出結果如下:

結論

1、父類至少有 無參構造函數時子類構造函數自動調用其父類無參構造函數( super() )。
2、若要調用父類有參構造函數需明寫super(……)。

下課!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM