Java類的繼承原理與用法分析
本文例項講述了Java類的繼承。分享給大家供大家參考,具體如下:
為什麼要繼承?
觀察兩個類的成員組成
提取相同的屬性和方法
寵物是父類,狗和金魚是子類。子類具有父類的屬性和方法。
繼承定義
是使用已存在的類作為基礎建立新類的技術。
單一繼承:只有一個父類。
父類可以叫做基類、超類。子類可以叫做派生類。
繼承注意事項
子類可以繼承父類中的成員(屬性和方法)。
但是需要注意:
1.private的成員不能繼承
2.子類和父類不在同一個程式包,使用預設訪問許可權的成員不能繼承
3.構造器不能繼承。
繼承原則
設計繼承關係要符合里氏替換原則。is-a關係
子類是父類,可以完全替換掉父類,程式碼沒有任何影響。
里氏替換原則(LSP):在一個軟體系統中,子類物件可以替換所有使用的父類物件,且程式行為沒有變化
重寫
在子類中,子類中的方法名、引數、返回值和父類中的完全相同,那麼叫做子類重寫了父類中的方法。
只有例項成員方法才能重寫。靜態成員方法、靜態變數、例項成員變數不能重寫,隱藏。
重寫和隱藏的根本區別
重寫可以實現多型,隱藏不能實現多型
重寫注意事項
1.名字必須完全一致
2.引數 父類擦除後與子類一致;或者與子類完全一致。
3.返回值型別 可以完全一致,如果是引用型別,允許子類的返回值型別是父類的 子類
4.訪問修飾符 子類不能比父類更嚴格。
5.異常處理 不能比父類範圍更大。
為什麼要重寫?
1.子類修改了父類中的功能。
2.子類擴充套件了父類中的功能。
class 父類手機{ public void 來電顯示(){ 顯示電話號; } }
class 子類手機 extends 父類手機{ public void 來電顯示(){ 顯示電話號; 顯示人名; 顯示地址; } }
super
表示父類範圍
super關鍵和this作用類似,是被遮蔽的成員變數或者成員方法或變為可見,或者說用來引用被遮蔽的成員變數和成員成員方法。
不過super是用在子類中,目的是訪問直接父類中被遮蔽的成員,注意是直接父類(就是類之上最近的超類)。
super的用法
第一、在子類構造方法中要呼叫父類的構造方法,用“super(引數列表)”的方式呼叫,引數不是必須的。同時還要注意的一點是:“super(引數列表)”這條語句只能用在子類構造方法體中的第一行。
第二、當子類方法中的區域性變數或者子類的成員變數與父類成員變數同名時,也就是子類區域性變數覆蓋父類成員變數時,用“super.成員變數名”來引用父類成員變數。當然,如果父類的成員變數沒有被覆蓋,也可以用“super.成員變數名”來引用父類成員變數,不過這是不必要的。
第三、當子類的成員方法覆蓋了父類的成員方法時,也就是子類和父類有完全相同的方法定義(但方法體可以不同),此時,用“super.方法名(引數列表)”的方式訪問父類的方法。
更多關於java演算法相關內容感興趣的讀者可檢視本站專題:《Java面向物件程式設計入門與進階教程》、《Java資料結構與演算法教程》、《Java操作DOM節點技巧總結》、《Java檔案與目錄操作技巧彙總》和《Java快取操作技巧彙總》
希望本文所述對大家java程式設計有所幫助。