常見的程式設計陷阱

2021-08-30 09:24:25 字數 1030 閱讀 6721

原資料來自:

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作為一種簡便靈巧的語言,深受開發者的喜愛。但對於初學者來說,要想輕鬆駕馭它,還得做好細節學習工作。初學者應該注意的地方 大括號不能獨立成行。未使用變數錯誤 對於全域性變數和函式引數變數,是可以定義後不使用的。但是對於函式內部變數來說,如果進行定義後不進行使用,編譯器會提示錯誤。匯入包未呼叫錯誤 ...