簡體   English   中英

Java繼承:是否可以使用超類中的參數訪問構造函數?

[英]Java inheritance: Can I access the constructor with parameters in super class?

假設我有一堂課:

package inheritanceexample;

public class SuperClass {

    public SuperClass() {
        System.out.println("super class constructor 1");
    }

    public SuperClass(int a) {
        System.out.println("super class constructor 2");
    }

    public SuperClass(int a, int b) {
        System.out.println("super class constructor 3");
    }
}

public class SubClass extends SuperClass {

    public SubClass() {
        System.out.println("sub class constructor 1");
    }

    public SubClass(int a) {
        System.out.println("sub class constructor 2");
    }

    public SubClass(int a, int b) {
        System.out.println("sub class constructor 3");
    }
}

public class SubClass1 extends SubClass {

    public SubClass1(int a) {
        super(a);
        System.out.println("sub class 1 constructor 1");
    }
}

如果要在extends SubClassSubClass1訪問構造函數SuperClass(int a) ,那么如何使用參數訪問SuperClass(int a)類中的構造SuperClass(int a) ,因為當我將super(int a)放入SubClass1 ,訪問或執行擴展子類中的構造函數。 我可以直接在SubClass1使用參數訪問SubClass1類中的構造函數嗎?

您不能跳過構造函數的級別:如果中間的類(即subclass )沒有公開調用superclass的特定構造函數的構造函數,則子類的subclass不再具有訪問這些構造函數的能力。

super關鍵字可讓您精確地跳上一級; 不允許跳過多個級別。

但是,此規則非常superClass :對於subclass1subclass擴展superClass的事實是實現細節。 subclass1在其自身超類的頭上調用superClass的構造函數將破壞對superclass封裝。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM