「Java」「interface欄位與父類別欄位同名」 Chapter5 Question3

Given:
interface Car{
 String a = "Car";
 public void detail();
}
class SuperCar{
 static String a = "SuperCar";
}
public class Test4 extends SuperCar implements Car{
 @Override
 public void detail() {
  System.out.println("轎車");
 }
 public static void main(String[] args) {
  new Test4().detail();
  System.out.println("a:"+a);//a欄位值模擬兩可 field a is ambiguous.
  System.out.println("a:"+SuperCar.a);
  System.out.println("a:"+Car.a);
 }
}

Answer:
System.out.println("a:"+a); 造成編譯錯誤

原因:
介面與父類別有相同的變數名稱,會造成不知該抓取哪個值。
所以需要告知要抓取哪個變數。

留言

這個網誌中的熱門文章

[Excel]國曆轉農曆VBA

「CSS」「div區塊介紹」 三欄式網頁排版設計

「生活」眉毛觀人