[英]Can a superclass type variable refer to a subclass object?
例如:
public class A {
public class B extends A {
}
public static void main(String[] args) {
A a;
a = new B();
}
}
我搜索了一些類似的問題,結果顯示“是的,超類類型變量可以引用子類對象”。 但是在eclipse中,上面的代碼出現了一個錯誤,例如“無法訪問類型A的封閉實例。必須使用類型A的封閉實例來限定分配(例如xxnew A(),其中x是A的實例)。”
那怎么了 謝謝!
答案是“是”,超類可以引用子類,但是您問的是錯誤的問題。
你得到這個錯誤,因為B
是一個封閉類的A
(這意味着你必須有一個實例 A
有實例B
),但你從一個靜態方法引用它(即不實例A
) 。
只需將B
更改為static
類即可。
public class A {
public static class B extends A { // <-- Added static keyword
}
public static void main(String[] args) {
A a;
a = new B();
}
}
沒有錯誤。
另一個選擇是將其保留為封閉類,並執行以下操作:
public class A {
public class B extends A { // leave B as an enclosed class
}
public static void main(String[] args) {
A a = new A();
a = a.new B(); // can only create a B in the context of an A
}
}
檢查你的身體! 它應該是:
class A {
}
public class B extends A {
public static void main(String[] args) {
A a;
a = new B();
}
}
另外,您的代碼中有兩個public
類!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.