1. 程式人生 > >如果類a繼承類b,實現介面c,而類b和介面c中定義了同名變數,請問會出現什麼問題?(瞬聯)

如果類a繼承類b,實現介面c,而類b和介面c中定義了同名變數,請問會出現什麼問題?(瞬聯)

如果類a繼承類b,實現介面c,而類b和介面c中定義了同名變數,請問會出現什麼問題?(瞬聯)


interface      A

{
       int x = 0;
}
class B

{
       int x =1;
}
class C extends B implements A

{
       public void pX()

{
        System.out.println(x);
     }
       public static void main(String[] args) {
          new C().pX();
       }
}
答案:錯誤。在編譯時會發生錯誤(錯誤描述不同的JVM有不同的資訊,意思就是未明確的x呼叫,兩個x都匹配(就象在同時import java.util和java.sql兩個包時直接宣告Date一樣)。對於父類的變數,可以用super.x來明確(輸出的是1),而介面的屬性預設隱含為 public static final.所以可以通過A.x來明確(輸出的是0)。