1纹安、this 用于區(qū)別成員變量與局部變量重名
????在成員變量前面添加 this.
2遍略、構(gòu)造方法
A 構(gòu)造方法概述:??
? ? 作用:為了給對象的屬性初始化
? ? 特點(diǎn):方法名與類名相同浅悉,沒有返回值,不需要void
? ? 注意:構(gòu)造方法不能用對象調(diào)用胸嘴,在創(chuàng)建對象的時候構(gòu)造方法與已經(jīng)執(zhí)行。
B 構(gòu)造方法重載:
????方法名相同,與返回值類型無關(guān)(構(gòu)造方法沒有返回值),只看參數(shù)列表
????注意:如果不寫構(gòu)造方法斩祭,系統(tǒng)會自動給出空參構(gòu)造劣像。如果要給出有參構(gòu)造的時候,必須要先給出空參構(gòu)造摧玫。
3耳奕、static 關(guān)鍵字
*A:static關(guān)鍵字的特點(diǎn)
??? * a:隨著類的加載而加? * b:優(yōu)先于對象存在? ?* c:被類的所有對象共享? ?* d:可以通過類名調(diào)用
? ? ?如果一個成員變量被所有對象共享,那么就可以把成員變量設(shè)置為靜態(tài)static
*B 靜態(tài)的注意事項(xiàng)
????*a 靜態(tài)方法中沒有this關(guān)鍵字诬像。
?????????????靜態(tài)是隨著類的加載而加載吮铭,this是隨著對象的創(chuàng)建而存在。靜態(tài)比對象先存在颅停。
? ? *b? 靜態(tài)方法只能訪問靜態(tài)的成員變量和靜態(tài)的成員方法
*C?靜態(tài)變量和成員變量的區(qū)別
?????靜態(tài)變量也叫類變量? 成員變量也叫對象變量
? ??*A:所屬不同
??????? *靜態(tài)變量屬于類,所以也稱為為類變量
??????? *成員變量屬于對象掠拳,所以也稱為實(shí)例變量(對象變量)
????*B:內(nèi)存中位置不同
??? ????*靜態(tài)變量存儲于方法區(qū)的靜態(tài)區(qū)
??? ????*成員變量存儲于堆內(nèi)存
????*C:內(nèi)存出現(xiàn)時間不同
??? ????*靜態(tài)變量隨著類的加載而加載癞揉,隨著類的消失而消失
??? ????*成員變量隨著對象的創(chuàng)建而存在,隨著對象的消失而消失
????*D:調(diào)用不同
??? ????*靜態(tài)變量可以通過類名調(diào)用溺欧,也可以通過對象調(diào)用
??? ????*成員變量只能通過對象名調(diào)用
5喊熟、代碼塊
????A? 代碼塊分類:
????根據(jù)其位置和聲明的不同,可以分為局部代碼塊姐刁,構(gòu)造代碼塊芥牌,靜態(tài)代碼塊,同步代碼塊(多線程講解)
????B:常見代碼塊的應(yīng)用
??????? * a:局部代碼塊:? ?在方法中出現(xiàn)聂使;限定變量生命周期壁拉,及早釋放,提高內(nèi)存利用率
??????? * b:構(gòu)造代碼塊 (初始化塊): 在類中方法外出現(xiàn)柏靶;多個構(gòu)造方法中相同的代碼存放到一起弃理,每次調(diào)用構(gòu)造都執(zhí)行,并且在構(gòu)造方法前執(zhí)行
??????? * c:靜態(tài)代碼塊: 在類中方法外出現(xiàn)屎蜓,并加上static修飾痘昌;用于給類進(jìn)行初始化,隨著類的加載而加載炬转,在加載的時候就執(zhí)行(優(yōu)先于主方法執(zhí)行)辆苔,且只執(zhí)行一次。? ? *一般用于加載驅(qū)動
6扼劈、繼承
?????A?:繼承的好處:* a:提高了代碼的復(fù)用性? * b:提高了代碼的維護(hù)性? ?* c:讓類與類之間產(chǎn)生了關(guān)系驻啤,是多態(tài)的前提
????B? :繼承的弊端:* 類的耦合性增強(qiáng)了。*開發(fā)的原則:高內(nèi)聚测僵,低耦合街佑。*耦合:類與類的關(guān)系? *內(nèi)聚:就是自己完成某件事情的能力
????C :繼承的特點(diǎn): JAVA中只支持單繼承(只有一個爹)谢翎,支持多層繼承(有祖宗)。
????D:? 繼承的注意事項(xiàng): *a:子類只能繼承父類所有非私有的成員(成員方法和成員變量)? ?* b:子類不能繼承父類的構(gòu)造方法沐旨,但是可以通過super關(guān)鍵字去訪問父類構(gòu)造方法森逮。? * c:不要為了部分功能而去繼承
????E:? 繼承中成員變量之間的關(guān)系: * 同名變量:就近原則
????F: 繼承中構(gòu)造方法的關(guān)系:
????????* 子類中所有的構(gòu)造方法默認(rèn)都會訪問父類中空參數(shù)的構(gòu)造方法。* 因?yàn)樽宇悤^承父類中的數(shù)據(jù)磁携,可能還會使用父類的數(shù)據(jù)褒侧。所以,子類初始化之前谊迄,一定要先完成父類數(shù)據(jù)的初始化闷供。
?????????每一個構(gòu)造方法的第一條語句默認(rèn)都是:super() ,即使不寫统诺,系統(tǒng)會默認(rèn)加上歪脏,用來訪問父類中的空參構(gòu)造。
? ????? 如果父類中沒有給出無參構(gòu)造粮呢,同時又寫了有參構(gòu)造婿失,則會出現(xiàn)問題
????G: 繼承中成員方法之間的關(guān)系:
????????* 重寫: 子父類出現(xiàn)了一模一樣的方法? ? ?* 當(dāng)子類需要父類的功能,而功能主體子類有自己特有內(nèi)容時啄寡,可以重寫父類中的方法豪硅。這樣,即沿襲了父類的功能挺物,又定義了子類特有的內(nèi)容懒浮。
????????*方法重寫注意事項(xiàng):
? ????? ? ? ?a:父類中私有方法不能被重寫 :因?yàn)楦割愃接蟹椒ㄗ宇惛揪蜔o法繼承
? ????? ? ? ?b:子類重寫父類方法時,訪問權(quán)限不能更低识藤,最好就一致
? ? ???? ? ?c:父類靜態(tài)方法砚著,子類也必須通過靜態(tài)方法進(jìn)行重寫。 其實(shí)這個算不上方法重寫蹋岩,靜態(tài)只能覆蓋靜態(tài)
????? ? ? ? ?子類重寫父類方法的時候赖草,最好聲明一模一樣。
???? ?H :Override(重寫)和Overload(重載)的區(qū)別剪个?
? ??????????? ?overload可以改變返回值類型,只看參數(shù)列表
????? ? ? ? ? ?方法重寫:子類中出現(xiàn)了和父類中方法聲明一模一樣的方法秧骑。與返回值類型有關(guān),返回值是一致(或者是子父類)的
????? ? ? ? ? ?方法重載:本類中出現(xiàn)的方法名一樣,參數(shù)列表不同的方法扣囊。與返回值類型無關(guān)乎折。
? ? ? ? ? ? ? *子類對象調(diào)用方法的時候,先找子類本身侵歇,再找父類骂澄。
7、this 與super
????*A:this和super都代表什么
??? ????* this:代表當(dāng)前對象的引用,誰來調(diào)用我,我就代表誰
??? ????* super:代表當(dāng)前對象父類的引用
????*B:this和super的使用區(qū)別
??? ????* a:調(diào)用成員變量
??????? ????* this.成員變量 調(diào)用本類的成員變量,也可以調(diào)用父類的成員變量(繼承)
??????? ????* super.成員變量 調(diào)用父類的成員變量
??? ????* b:調(diào)用構(gòu)造方法
??????????? * this(...) 調(diào)用本類的構(gòu)造方法
??????????? * super(...)??? 調(diào)用父類的構(gòu)造方法
??????? * c:調(diào)用成員方法
??????????? * this.成員方法 調(diào)用本類的成員方法,也可以調(diào)用父類的方法(繼承)
??????? ????* super.成員方法 調(diào)用父類的成員方法????
????注意:在一個構(gòu)造方法中不能同時寫this(...)?和super(...)?惕虑。? this(...) 和super(...) 必須卸載第一條語句坟冲。
8磨镶、final
????A:概述:
????B:final修飾特點(diǎn)
??? ????*修飾類,類不能被繼承
??? ????*修飾變量健提,變量就變成了常量琳猫,只能被賦值一次
??? ????*修飾方法,方法不能被重寫
? ? ????*修飾引用數(shù)據(jù)類型:不能改變其地址值私痹,但是可以改變其屬性值
? ? ????*修飾基本類型變量:不能改變其值脐嫂。
9、多態(tài)(polymorphic)
????A:概述:事物存在多種形態(tài)
? ? B:多態(tài)前提:? 要有繼承紊遵、方法重寫账千、父類引用指向子類對象
????C:成員變量:編譯看左邊(父類),運(yùn)行看左邊(父類)
? ? ? ? ? ?成員方法:編譯看左邊(父類)暗膜,運(yùn)行看右邊(子類)? ?動態(tài)綁定匀奏。
? ? ? ? 靜態(tài)成員方法:編譯看左邊(父類),運(yùn)行看左邊(父類) 靜態(tài)和類相關(guān)学搜,不算重寫攒射,看左邊
????D:多態(tài)的好處:提高了代碼的維護(hù)性,提高了代碼的擴(kuò)展性恒水。? 把類當(dāng)做參數(shù)的時候多態(tài)非常好,擴(kuò)展性強(qiáng)饲齐。
10钉凌、抽象 abstract
? ? 抽象類特點(diǎn):
? ? ? ? 抽象類和抽象方法必須用abstract修飾。?
????????抽象類不一定有抽象方法捂人,有抽象方法的類一定是抽象類或者是接口御雕。
?????????抽象類不能實(shí)例化,按照多態(tài)有子類實(shí)例化滥搭。
????????抽象類的子類要么是抽象類酸纲,要么重寫抽象類中的所有抽象方法。
????????抽象類中成員變量可以是常量也可以是變量瑟匆。
? ? ? ? 抽象abstract 不能和static 闽坡、private、final共存(作用矛盾)
11愁溜、接口
接口特點(diǎn):
? ? ? ? 用關(guān)鍵字interface表示: interface 接口名{}
? ? ? ? 類實(shí)現(xiàn)接口 :class 類名 implements 接口名{}
? ? ? ? 接口不能實(shí)例化疾嗅,只能用多態(tài)的方式實(shí)例化
? ? ? ? 接口的子類可以是具體類,要重寫接口中的所有抽象方法冕象。? ?可以是抽象類代承,但意義不大。
????成員特點(diǎn):
? ? ? ? 成員變量只能是常量渐扮,并且是靜態(tài)的公共的论悴。 public static final
? ? ? ? 接口沒有構(gòu)造方法掖棉。 成員方法只能是抽象方法。 public abstract
12膀估、類與類幔亥,類與接口,接口與接口
? ? 類與類:繼承關(guān)系玖像,只能是單繼承關(guān)系紫谷,可以多層繼承
? ? 類與接口:實(shí)現(xiàn)關(guān)系,可以是單實(shí)現(xiàn)捐寥,可以是多實(shí)現(xiàn)笤昨,并且可以繼承一個類的同時實(shí)現(xiàn)多個接口
? ? 接口與接口:繼承關(guān)系,可以單繼承可以多繼承
13握恳、權(quán)限修飾符
? ? ? ? ? ? ? ? ? ? ? 本類??? 同一個包下(子類和無關(guān)類)?? 不同包下(子類)? 不同包下(無關(guān)類)
??????? private? ? ?Y??????
??????? 默認(rèn)? ? ? ? ?Y? ? ? ? ? ? ? ? ? ? ? ?Y
??????? protected Y? ? ? ? ? ? ? ? ? ? ? ? Y? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? Y
??????? public? ? ? ?Y? ? ? ? ? ? ? ? ? ? ? ? ?Y? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?Y? ? ? ? ? ? ? ? ? ? ?Y
14瞒窒、內(nèi)部類私有
????A:內(nèi)部類訪問特點(diǎn)
??????? * a:內(nèi)部類可以直接訪問外部類的成員,包括私有乡洼。
??????? * b:外部類要訪問內(nèi)部類的成員崇裁,必須創(chuàng)建對象。
??????? *外部類名.內(nèi)部類名 對象名 = 外部類對象.內(nèi)部類對象;
? ? B:成員內(nèi)部類私有使用