java自學之路-----多態 內部類

多態{

注意{
1.父類或接口的引用指向子類對象
2.父類引用不可以調用子類特有內容
3.向上轉型完成了子類對象的類型提升,提升了擴展性
4.向下轉型是爲了使用子類特有的方法 
}

instanceof{
1.是一個關鍵字
2.用於判斷對象的具體類型,只能用於引用數據類型的判斷,即一般向下轉型時使用
3.格式:引用數據類型  instanceof  類(or接口),如果引用數據類型是類(接口)的類型就返回true,反之false
}

多態成員的特點{
Animal a = new Cat();
成員變量:編譯的時候判斷引用型變量所屬的類是否有調用的成員變量,運行時調用的是該所屬類的成員變量,即參考語句左邊的內容
成員函數:編譯的時候判斷引用型變量所屬的類是否有調用的成員函數(且該方法不可private),運行時調用的是對象所屬的類中有調用的函數;如果成員函數中有成員變量,參考的則是成員函數的那個類。即編譯時參考左邊,運行時參考右邊
靜態函數:編譯和運行時都參考引用型變量所屬類中的靜態方法。即參考語句左邊的內容

大致可以理解爲:
兒子化妝成父親即向上轉型,成員變量即兒子有年齡,父親也有年齡,但是兒子必須用父親的年齡才不至於暴露。成員函數即父親有一休閒的方法,兒子也有以休閒的方法,但是把父親的方法覆蓋了,所以就算化妝了之後要採用休閒方法,首先父親要有這個方法,兒子才能去做,但是兒子依舊只能用自己休閒的內容,因爲父親的休閒內容被覆蓋了;如果父親有一個方法別人不知道的,就算兒子化妝之後卻不知道,所以就會出錯誤。但是如果兒子化妝後想要用自己的獨特方法就必須卸妝,即向下轉型
}
}

內部類{

特點{
1.可以訪問外部類的所有成員
2.外部類訪問內部類的成員時要先建立對象
3.內部類用來類設計的時候,分析一件事物,發現它還包含了另外一個事物
4.內部類可以直接訪問外部類的成員,因爲內部類持有外部類引用,即外部類名.this
5.內部類如果是在局部位置(方法區裏)訪問局部中的局部變量必須用final修飾
}

調用{
1.不是內部類所在的類調用格式 :外部類名.內部類名 引用變量 = 建立外部類對象.new 內部類();
2.內部類是靜態的調用格式: 外部類名.內部類名 引用變量 = new 外部類名.內部類名();
3.內部類靜態,成員也靜態調用格式: 外部類名.內部類名.靜態成員;
注意:內部類的成員靜態的話,內部類也必須靜態
}

匿名內部類{
注意{
1.內部類必須繼承或實現一個外部類或接口才能匿名
2.設計匿名內部類實質就是創建一個匿名子類對象
}
格式:
new 父類(or接口){子類需要定義的內容}(.子類方法);這樣設計可以訪問子類特有的方法
父類 引用變量 = new 父類(or接口){子類需要定義的內容};這樣設計相當於向上轉型通過引用變量就不能訪問到子類的特有方法
}

如果匿名內部類用於多態這種情況即: 方法(匿名內部類),就不應該在內部類設計過多方法,否則就會造成非常多的代碼導致閱讀性差
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章