[英]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 SubClass
的SubClass1
訪問構造函數SuperClass(int a)
,那么如何使用參數訪問SuperClass(int a)
類中的構造SuperClass(int a)
,因為當我將super(int a)
放入SubClass1
,訪問或執行擴展子類中的構造函數。 我可以直接在SubClass1
使用參數訪問SubClass1
類中的構造函數嗎?
您不能跳過構造函數的級別:如果中間的類(即subclass
)沒有公開調用superclass
的特定構造函數的構造函數,則子類的subclass
不再具有訪問這些構造函數的能力。
super
關鍵字可讓您精確地跳上一級; 不允許跳過多個級別。
但是,此規則非常superClass
:對於subclass1
, subclass
擴展superClass
的事實是實現細節。 讓subclass1
在其自身超類的頭上調用superClass
的構造函數將破壞對superclass
封裝。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.