1、屬性的隱藏
-子類中宣告了與父類中相同的成員變數名,則從父類繼承的變數將被隱藏
-子類擁有了兩個相同名字的變數,乙個繼承自父類,另乙個由自己宣告
-當子類執行繼承自父類的操作時,處理的是繼承自父類的變數,而當子類執行它自己宣告的方法時,所操作的就是它自己宣告的變數
2、如何訪問被隱藏的父類屬性
–呼叫從父類繼承的方法,則操作的是從父類繼承的屬性
–使用super.屬性
3、子類不能繼承父類中的靜態屬性,但可以對父類中的靜態屬性進行操作。如在上面的例子中,將「int x = 2;」改為「static int x = 2;」,再編譯及執行程式,會得到下面的結果4
super.x= 14 x= 100
14super.x= 16 x= 100
1616
在上面的結果中,第一行及最後一行都是語句「a1.printa();」輸出的結果,顯然類b中的printb()方法修改的是類a中的靜態屬性x
4、方法覆蓋
–如果子類不需使用從父類繼承來的方法的功能,則可以宣告自己的同名方法,稱為方法覆蓋
–覆蓋方法的返回型別,方法名稱,引數的個數及型別必須和被覆蓋的方法一摸一樣
–只需在方法名前面使用不同的類名或不同類的物件名即可區分覆蓋方法和被覆蓋方法
–覆蓋方法的訪問許可權可以比被覆蓋的寬鬆,但是不能更為嚴格
5、方法覆蓋的應用場合
–子類中實現與父類相同的功能,但採用不同的演算法或公式
–在名字相同的方法中,要做比父類更多的事情
–在子類中需要取消從父類繼承的方法
6、必須覆蓋的方法
–派生類必須覆蓋基類中的抽象的方法,否則派生類自身也成為抽象類.
不能覆蓋的方法
–基類中宣告為final的終結方法
–基類中宣告為static 的靜態方法
呼叫被覆蓋的方法
–super.overriddenmethodname();
Java中的覆蓋和隱藏
覆蓋 override 只針對例項方法 不針對靜態方法和成員變數 在執行時決定呼叫那個方法,是多型性的體現。注意事項 父類中的static和final方法不能被覆蓋 子類的例項方法不能覆蓋父類的靜態方法 子類的靜態方法也不能覆蓋父類的例項方法,會編譯時出錯 函式返回值型別必須與父類相同,但在 中返回...
JAVA隱藏與覆蓋
如 假設有乙個父類father和乙個子類son。父類有乙個成員變數a 0 有乙個靜態成員變數b 0 有乙個成員方法f,輸出0 有乙個靜態成員方法g,輸出0。子類分別重寫這些變數和方法,只是修改變數的值和方法的輸出,全部改為1.我們再宣告乙個靜態型別是父類,動態型別是子類的引用 father fath...
C 學習筆記(二)隱藏和覆蓋(重寫)
如果基類和派生類宣告了兩個具有相同簽名的方法,編譯時會顯示乙個警告。方法簽名由方法名 引數數量和引數型別共同決定,方法的返回型別不計入簽名。派生類方法會隱藏 或遮蔽 基類中具有相同簽名的方法。visual c 2013從入門到精通 class animal class cat animal clas...