抽象類 Abstract Class
一葡秒、抽象類
抽象類由abstract關(guān)鍵字來修飾,當一個類不能描述出具體對象的實現(xiàn)嵌溢,只能描述它的一些表象眯牧,具體的實現(xiàn)由導(dǎo)出類(子類)來描述時,可以使用抽象類赖草。抽象類體現(xiàn)了數(shù)據(jù)抽象的思想学少,是實現(xiàn)多態(tài)的一種機制。它定義了一組抽象的方法秧骑,至于這組抽象方法的具體表現(xiàn)形式由派生類來實現(xiàn)版确。
抽象類的特點:
1、抽象類不能被實例化乎折,實例化的工作應(yīng)該交由它的子類來完成绒疗,它只需要有一個引用即可。
2骂澄、抽象方法必須由子類來進行重寫吓蘑。
3、只要包含一個抽象方法的抽象類坟冲,該方法必須要定義成抽象類磨镶,不管是否還包含有其他方法溃蔫。
4、抽象類中可以包含具體的方法棋嘲,當然也可以不包含抽象方法。
5矩桂、子類中的抽象方法不能與父類的抽象方法同名沸移。
6、abstract不能與final并列修飾同一個類侄榴。
7雹锣、abstract 不能與private鸭限、static难礼、final或native并列修飾同一個方法珊搀。
二昼浦、接口 Interface
接口由Interface修飾垮卓,如果說abstract是部分抽象的尘分,那么接口就是完全抽象的
接口的特點
1搁宾、個Interface的方所有法訪問權(quán)限自動被聲明為public猎唁。確切的說只能為public
2恒水、接口中可以定義“成員變量”会放,或者說是不可變的常量,因為接口中的“成員變量”會自動變?yōu)闉閜ublic static final钉凌∵肿睿可以通過類命名直接訪問:ImplementClass.name。
3御雕、接口中不存在實現(xiàn)的方法矢沿。
4、實現(xiàn)接口的非抽象類必須要實現(xiàn)該接口的所有方法酸纲。抽象類可以不用實現(xiàn)捣鲸。
5、不能使用new操作符實例化一個接口闽坡,但可以聲明一個接口變量摄狱,該變量必須引用(refer to)一個實現(xiàn)該接口的類的對象∥尬纾可以使用 instanceof 檢查一個對象是否實現(xiàn)了某個特定的接口媒役。例如:if(anObject instanceof Comparable){}。
6宪迟、在實現(xiàn)多接口的時候一定要避免方法名的重復(fù)酣衷。
7、Java通過實現(xiàn)多個接口來實現(xiàn)多重繼承次泽、
8穿仪、不可以在interface中創(chuàng)建private的接口
接口的嵌套
1.類中一個私有的接口不能被除了該類內(nèi)的內(nèi)部類以外的類實現(xiàn)
class A{
private interface Test{}
private class B implements Test{
}
public void getTest(Test t){
return new B();
}
}
class B {
//class C implement A.Test {} 是不可以的
}