1 抽象類:abstract修飾的類,爲繼承和多態設計,在繼承中充當父類,抽象類不允許實例化,即不能new
2 抽象方法:使用abstract修飾的方法,抽象方法不允許有方法實現,即方法實體{ }
3 在Java中,如果類中包含抽象方法時,類就必須是抽象類,但抽象類中可以沒有抽象方法,只有普通方法
4 父類中的抽象方法,在子類中必須實現(即在子類中必須重寫父類的抽象方法),否則子類也必須是抽象類,抽象類不允許實例化
5 通常將父類定義成抽象類,通過抽象方法要求子類必須有某種行爲
6 抽象類可以有實例變量,以及一個或多個構造方法,這些構造方法不能被用來創建實例,抽象類的構造方法可以被其子類用super調用
二 接口
1 接口:接口和類是並列概念,使用關鍵字interface修飾的是接口,使用關鍵字class修飾的是類,
2 接口中的所有成員都不允許修改:接口中定義的變量默認爲常量,即默認被public static final修飾,不能進行再一次賦值
接口中的方法都是爲繼承而設計的,方法不能實現,即默認被public static修飾,接口中的方法在子類中必須全部實現
3 在Java中,一個類只能直接繼承一個父類,但可以實現多個接口,接口相當於父類
4 約束毫不相關的類有相同的行爲時,可以實現一個接口
5 類可以被繼承,接口只能被實現,一個類可以同時實現多個接口,實現多個接口時,接口之間用逗號分隔
6 抽象類和接口的比較:兩者都爲繼承而生,提高了代碼複用
a 抽象類是單繼承的,接口可以被實現多個
b 抽象類中的方法包括普通方法和抽象方法,接口中只能是抽象方法
c 抽象類中的變量包括常量和普通變量,接口中的變量只能是常量
d 定義抽象類的關鍵字是abstract,定義接口的關鍵字是interface
e 抽象類的繼承關鍵字是extends,接口的實現的關鍵字是implement
f 抽象類中可以有普通方法的實現,接口中不能有方法的實現
三 final關鍵字
1 final修飾的類,表示最終類,不能被繼承有子類
2 final修飾的方法,不能在子類中重寫
3 final修飾的變量爲常量,不能被重新賦值
4 在Java中,常量的命名一般都是用大寫字母,多個單詞之間用下劃線分隔
5 final類有:String類,System類,Java.util.Scanner類
6 final與abstract相反
四 內部類
1 定義在一個類內部的類,只能在外部類的內部使用
2 內部類可以被static修飾,也可以被public修飾
五 匿名類
1 沒有名稱的類
2 匿名類內部不用定義類文件和具體類名,只需在實例化接口或抽象類時,實現接口和類的抽象方法
3 匿名內部類的實現是一次性的,不能代碼重用
4 直接實例化接口,必須使用匿名內部類對接口中的方法進行實現
5 運行時,new 接口時JVM會自動定義一個類,該類會實現接口