原資料來自:
1.public class privateoverride
public static void main(string args)
} class derivedclass extends privateoverride
} //輸出結果為:private f()
分析:private方法被自動認為是final方法,而且對於子類是遮蔽的,因此,derivedclass類的f()方法是乙個新方法,基類中的f()方法對於子類derivedclass是不可見的,因此不能被過載,導致呼叫的是宣告基類的f()方法。
2.直接訪問某個域,這個訪問將在編譯期進行解析。
class super
} class sub extends super
public int getsuperfield()
} public class fieldaccess
} /* 輸出結果:
sup.field = 0, sup.getfield() = 1
sub.field = 1, sub.getfield() = 1, sub.getsuperfield() = 0
*/ 當sub物件轉型為super引用時,任何域訪問操作都將由編譯器解析,因此不是多型的。
sub實際上包含兩個稱為field的域:它自己的和從super繼承來的。
3.如果某個方法是靜態的,它的行為也不具有多型性。
class staticsuper
public string dynamicget()
} class staticsub extends staticsuper
public string dynamicget()
} public class staticpolymorphism
} /* 輸出結果:
base staticget()
derived dynamicget()
*/ 因為靜態方法是和類相關聯的,而不是某個物件。
C 常見陷阱
注 char型別在標準中是個特別的存在,它沒有被規定為有符號或無符號。比如int指的是有符號,而char不一樣。在程式設計時最好給char寫上符號,否則同樣的表示式可能在不同的編譯器 平台會有不同的結果。請觀察乙個程式輸出 int main 輸出 fffffff1,fffffff2,f0f2 fff...
Python常見陷阱
coding utf 8 python需要常見陷阱 print u 1.預設值引數 default parameter values 1.預設值引數 default parameter values 1.1 預設值引數的引入 預設值引數的作用 還可以使用預設引數 可變引數和關鍵字引數,使得函式定義出...
Go開發常見陷阱
go作為一種簡便靈巧的語言,深受開發者的喜愛。但對於初學者來說,要想輕鬆駕馭它,還得做好細節學習工作。初學者應該注意的地方 大括號不能獨立成行。未使用變數錯誤 對於全域性變數和函式引數變數,是可以定義後不使用的。但是對於函式內部變數來說,如果進行定義後不進行使用,編譯器會提示錯誤。匯入包未呼叫錯誤 ...