繼承的概述
創(chuàng)新互聯(lián)技術(shù)團(tuán)隊(duì)10多年來致力于為客戶提供網(wǎng)站設(shè)計(jì)、成都做網(wǎng)站、成都品牌網(wǎng)站建設(shè)、成都全網(wǎng)營銷、搜索引擎SEO優(yōu)化等服務(wù)。經(jīng)過多年發(fā)展,公司擁有經(jīng)驗(yàn)豐富的技術(shù)團(tuán)隊(duì),先后服務(wù)、推廣了超過千家網(wǎng)站,包括各類中小企業(yè)、企事單位、高校等機(jī)構(gòu)單位。
多個(gè)類中存在相同屬性和行為時(shí),將這些內(nèi)容抽取到單獨(dú)一個(gè)類中,那么多個(gè)類無需再定義這些屬性和行為,只要繼那個(gè)類即可。
多個(gè)類可以稱為子類,單獨(dú)這個(gè)類稱為父類或者超類。
子類可以直接訪問父類中的非私有的屬性和行為。
通過 extends 關(guān)鍵字讓類與類之間產(chǎn)生繼承關(guān)系。
class SubDemo extends Demo{}
繼承的出現(xiàn)提高了代碼的復(fù)用性。
繼承的出現(xiàn)讓類與類之間產(chǎn)生了關(guān)系,提供了多態(tài)的前提。
繼承的特點(diǎn)
Java只支持單繼承,不支持多繼承。
一個(gè)類只能有一個(gè)父類,不可以有多個(gè)父類。
class SubDemo extends Demo{} //ok
class SubDemo extends Demo1,Demo2...//error
Java支持多層繼承(繼承體系)
class A{}
class B extends A{}
class C extends B{}
定義繼承需要注意:
不要僅為了獲取其他類中某個(gè)功能而去繼承
類與類之間要有所屬(" is a " )關(guān)系,xx1是xx2的一種。
super關(guān)鍵字
super和this的用法相像
this代表本類對象的引用
super代表父類的內(nèi)存空間的標(biāo)識。
當(dāng)子父類出現(xiàn)同名成員時(shí),可以用super進(jìn)行區(qū)分
子類要調(diào)用父類構(gòu)造函數(shù)時(shí),可以使用super語句。
子類的實(shí)例化過程
子類中所有的構(gòu)造函數(shù)默認(rèn)都會訪問父類中空參數(shù)的構(gòu)造函數(shù)
因?yàn)槊恳粋€(gè)構(gòu)造函數(shù)的第一行都有一條默認(rèn)的語句super();
final關(guān)鍵字
final可以修飾類,方法,變量。
final修飾的類不可以被繼承。
final修飾的方法不可以被覆蓋。
final修飾的變量是一個(gè)常量。只能被賦值一次。
內(nèi)部類只能訪問被final修飾的局部變量。
子類會具備父類中的數(shù)據(jù),所以要先明確父類是如何對這些數(shù)據(jù)初始化的。
當(dāng)父類中沒有空參數(shù)的構(gòu)造函數(shù)時(shí),子類的構(gòu)造函數(shù)必須通過this或者super語句指定要訪問的構(gòu)造函數(shù)。
最近51CTO+IT十八掌免費(fèi)大數(shù)據(jù)課程,有興趣的小伙伴可以去徐培成老師直播客或者視頻具體學(xué)習(xí)一下。