2.下面程序運行會發生什麼結果?若是有錯誤,如何改正?
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來明確,而接口的屬性默認隱含爲 public static final.因此能夠經過A.x來明確.
基礎知識複習:
一、super(參數):調用基類中的某一個構造函數(應該爲構造函數中的第一條語句)。二、this(參數):調用本類中另外一種造成的構造函數(應該爲構造函數中的第一條語句);三、super: 它引用當前對象的直接父類中的成員(用來訪問直接父類中被隱藏的父類中成員數據或函數,基類與派生類中有相同成員定義時)。