封裝、繼承及接口
封裝:按照信息隱藏的原則,將數據組織在一起,封裝的兩個特點:信息的集合,信息的隱藏
私有屬性加get set方法和公有屬性的區別
私有屬性不能直接訪問,只能通過set方法進行屬性的設置,通過get方法進行屬性的訪問,所以可以通過刪除set方法或get方法,將屬性做成
只讀或只寫屬性,這一點公有屬性做不到
私有屬性在設置之前,可以在set方法中,完成屬性值有效性的判斷,可以避免非法數據的錄入,公有屬性做不到
私有屬性同樣可以被子類所繼承,只不過不能被子類直接訪問,這是因為創建子類之前,會先產生父類對象,所以子類對象中包含一個完整
的父類對象,也就包含父類對象中的一切數據
靜態塊:static{}只在類加載時執行一次,一般用於一些初始化配置,而構造方法是每產生一個新對象都會執行
實例化塊:在每個對象產生時都會執行一次,在super()之後執行
內部類:在一個類中再定義一個類,該類稱為內部類,內部類相當於外部類的屬性,內部類對象的產生必須依賴外部類對象,內部類生成的
class文件命名規範:外部類名$內部類名.class
多態:允許一個父類變量引用於子類的對象,允許一個接口類型變量引用實現類對象,反過來卻不行(相同的行為,不同的實現)
多態調用時,利用父類變量指向子類對象,調用的方法和屬性只限於父類中定義的方法和屬性,不能調用子類中特有的方法和屬性
多態的主要應用:多態參數,多臺集合
向上轉型:小類型對象可以直接被大類型的變量引用
向下轉型:大類型對象轉化為小類型時必須強轉
當試圖將對象強制轉換成不是實例的子類時拋出異常:java.lang.classcastException
多態總結:使用父類類型的引用指向子類的對象
該引用只能調用父類中的一個方法,不能調用子類中獨有的方法
如果子類中重寫了父類中的一個方法,那麽在調用該方法時將會調用子類中的這個方法
在多態中子類可以調用父類中的所有方法
多態主要體現在重載和重寫,相同的行為,不同的實現
如果一個方法只有方法的定義,沒有方法的具體實現,那麽該方法稱為抽象對象,用修飾詞adsract定義,將有抽象對象的類稱為抽象類
,也用於修飾abstract定義,抽象類不能直接實例化,抽象類變量只能指向子類對象
如果一個類繼承一個抽象類,那麽必須重寫抽象類中定義的所有方法,否則編譯錯誤
抽象方法必須由子類提供具體的實現,所以不能是私有的,抽象方法也不能是靜態的,靜態方法加載時機在對象之前
接口:可以看作是抽象類的特例,抽象類中可以定義抽象方法,也可以定義具體方法,但在接口中只能定義抽象方法,所以接口可以看作是
行為的抽象
如果一個類實現接口後,那麽可以使用接口變量指向實現對象,所調用的方法就是實現類實現的方法
如果一個方法使用接口做參數,意味著可以傳遞任何一個接口的實現對象。在接口中只能定義抽象方法,並且該方法只能是公有的抽象方法
不能用protected和private修飾接口中的方法
在接口中不能定義屬性,只能定義公有的靜態的變量、
接口可以繼承接口,並可以多繼承接口,如果一個類要實現一個接口那麽除了實現接口中定義的抽象方法,還要實現該接口父接口定義的
抽象方法。
抽象類和接口的區別和聯系
1、抽象類和接口都不能被直接實例化,抽象類的變量只能指向子類對象,接口變量只能指向實現類的對象
2、抽象類中可以定義抽象方法,可以定義具體方法,但是在接口中只能定義抽象方法
3、抽象類中定義的變量是普通屬性,在接口中定義的變量,只能是公共的靜態的常量
4、抽象類中只能單根繼承,但接口可以多實現。
事件監聽實現步驟:1、確定事件源
2、確定監聽器
3、註冊,建立事件源和監聽器的聯系
封裝、繼承及接口