簡體   English   中英

超類類型變量可以引用子類對象嗎?

[英]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.

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