?Java抽象類踱侣、接口、內(nèi)部類(靜態(tài)內(nèi)部類大磺,非靜態(tài)內(nèi)部類抡句、匿名內(nèi)部類)、枚舉類 知識點總結
一.抽象類
? 類的基本特征也就是屬性 杠愧、構造器待榔、方法\這里從這三個方面介紹抽象類
1.關鍵字:abstract ?
2.基本要點:
普通類里面有的東西抽象類里面都有,也就是屬性是跟普通類沒有差別的。方法也可以寫普通方法
抽象類構造器需要深度將一下:普通類的繼承是不會繼承父類構造器的锐锣,如果父類的構造器是無參構造器那么子類也是一個無參構造器腌闯。也就是繼成之后自動生成的super(); ? 如果父類的構造器不是默認的空構造器,就需要在子類的構造器中使用super(String a,String b);調用父類構造器中有的參數(shù)雕憔,然后可以在初始化自己的子類參數(shù),this.c = c; ??
這里的抽象類也是一樣的姿骏,abstract類繼承,只繼承到屬性跟方法斤彼。構造器自己寫自己的然后使用super(......);調用父類的具體初始化實現(xiàn)
抽象類的抽象方法:public abstract void 名字(); ?是不需要方法體的分瘦,知識體現(xiàn)了一個通用的行為特征,整個行為特征是無法分辨的琉苇,比如動物抽象類中的一個叫聲的方法擅腰,是不知道是那種具體動物叫的沒法試下具體的方法體。所以繼承抽象類后需要實現(xiàn)里面的所有抽象方法翁潘。抽象類也是用來被繼承的趁冈!
3.抽象類知識點:
? 抽象類不能實例化,也就是不能new拜马,so也就是構造器不可以創(chuàng)建對象渗勘,沒有構造器(普及一下,普通類的 ? ? new其實就是使用構造器來創(chuàng)建實例(對象)的)俩莽。也所以抽象類必須要被普通子類來實現(xiàn)旺坠。 ??
? 抽象類里面不一定有抽象方法,但是有抽象方法的類一定是抽象類扮超。 ?
? 抽象類體現(xiàn)的是一種模板類取刃,是未完成的類設計。
4.總結一下:抽象類就比普通類多了個抽象方法出刷,其他的普通類有的抽象類也都有.都一樣
二:接口(接口也是抽象的一種體現(xiàn)形式)
1.關鍵字:interface
2.基本要點:
這里也是從 屬性 構造器 方法來說
屬性:相比抽象類來說有點不一樣璧疗,接口中的屬性默認都是常量,默認使用public static final來修飾馁龟,想想也是崩侠,人家提供接口就得給你定死,不能再修改了坷檩。
構造器:沒有却音。 ?有屬性。 ?也體現(xiàn)出接口是不能new實例的矢炼,跟抽象類是一樣的系瓢,所以說接口也是抽象類的一種體現(xiàn)形式。
有參數(shù)無法構造句灌。
方法:默認是抽象的夷陋,public abstract void test(); ?也可以寫成 void test(); ?用來被實現(xiàn)接口的類重新實現(xiàn)。p
3.接口知識點
首先接口之間可以進行多繼承,類實現(xiàn)接口可以多實現(xiàn)肌稻。
接口是一套行為規(guī)范清蚀,約束了怎樣去做。具體的做法可能不同爹谭,但是結果都是一樣的枷邪。
Interface test = new Test();//接口變量指向其實現(xiàn)類的實例
接口體現(xiàn)了規(guī)范與實現(xiàn)相分離原則。充分利用接口可以利于代碼的擴充維護
接口也是用來繼承的诺凡,位于繼承鏈 的頂端东揣。
實現(xiàn)接口就必須實現(xiàn)接口里的所有抽象方法,除非你本身就是一個抽象方法腹泌。
4.補充:
接口的多態(tài): 接口變量指向其實現(xiàn)類的實例
抽象類的多態(tài):父類引用指向子類實例
三:內(nèi)部類
? ? 用的不多嘶卧,能看懂就行
內(nèi)部類可以理解為是像構造器那樣,是類的一個成員凉袱。他提供了一個更好的封裝芥吟,但是使原來的東西更復雜,所以出現(xiàn)頻率不是很高专甩、
1.非靜態(tài)內(nèi)部類
? ? ? ? ?主要是看如何調用的钟鸵,個人總結如下:
? ? ? ? ?外部類.內(nèi)部類 ? 內(nèi)部類實例(可用) ?= 外部類實例.內(nèi)部類實例(new 類名)
知識點:
? ? ? ? ? ? ? 不可以定義靜態(tài)成員,加載問題涤躲。
? ? ? ? ? ? ? 可以定義非靜態(tài)成員
2.靜態(tài)內(nèi)部類
知識點:
? ? ? ? ? ? ?靜態(tài)內(nèi)部類static修飾
? ? ? ? ? ? ?可以定義靜態(tài)成員
? ? ? ? ? ? ?可以定義非靜態(tài)成員
3.匿名內(nèi)部類
? (1)抽象匿名內(nèi)部類
? ? ? ?抽象匿名內(nèi)部類 new表示創(chuàng)建了一個匿名內(nèi)部類的實例棺耍,這個類繼承抽象類AbstractDemo
? ? ? ?new abstract()創(chuàng)建了一個實例,實現(xiàn)了抽象類的匿名內(nèi)部類的實現(xiàn)
? (2)接口匿名內(nèi)部類
有一點需要注意:匿名類最后結尾加分號
?new創(chuàng)建了一個匿名內(nèi)部類的實例种樱,這個匿名內(nèi)部類實現(xiàn)了接口
接口變量指向其實現(xiàn)類的實例蒙袍,當調用方法時,執(zhí)行的是其實現(xiàn)方法的方法
四:枚舉類
定義:方法 屬性 構造器 與普通類的定義是一樣的嫩挤。
枚舉類 基本知識點:
? ?關鍵字: enum?
? ?枚舉類中不需要new創(chuàng)建實例害幅,在創(chuàng)建類的時候實例就已經(jīng)創(chuàng)建好了。
? ?枚舉類的構造器只能使用private修飾俐镐,限制了實例不可以在外部創(chuàng)建矫限,直接是用實例!比如上面代碼中的DOG PIG
?屬性一般(推薦)定義成private final,一定是private的佩抹。只需要提供get方法