Day08 多型 匿名內部類

2021-10-08 09:37:42 字數 2406 閱讀 3314

回顧:許可權修飾符: public -> protected -> (default) ->private

重寫:1.方法名和引數列表一致

2.子類中重寫的方法, 返回值型別[小於等於]父類返回值型別

3.許可權修飾符,[大於等於]父類方法的許可權

類: 類不能被繼承

方法: 方法不能被重寫

變數: 常量, 不能被修改, 必須初始化

常見的final類:

string math

string不可變的: charsequence - 字串行 - 字元陣列

底層實現: 字元陣列 -> 位元組陣列 byte value

final value = 其他值

string str = 「hello」;

str = 「hi」;

介面:1.公共的抽象方法

2.公共的靜態常量 public static final

3.公共的預設方法

4.公共的靜態方法[私有的]

5.私有的方法

使用介面:

實現類 implements 介面

實現所有的抽象方法, 預設方法[可以選擇性重寫]

建立實現類物件, 呼叫方法

類和介面叫做多實現, 要重寫/覆蓋[實現]所有的介面的所有抽象方法

和 重複的預設方法

類和類 叫做單繼承, 父類中的方法和父介面中的預設方法重複了, 優先呼叫父類中的方法

zi extends fu implements inte***cea

介面作為方法引數, 介面作為返回值:

具體使用的都是介面的實現類物件

多型的前提:

class myinte***ceaimpl extends object implmenets myinte***cea

myinte***cea a = new myinte***ceaimpl() -> 向上造型

object o = new myinte***ceaimpl() -> 向上造型

fu fu = new zi();

animal a = new cat();

父型別引用 指向 子型別物件 -> 向上造型

父型別 a = new 子型別物件();

介面型別 a = new 實現類物件();

編譯器 看 = 左邊型別, 執行時jvm 看 = 右邊型別

左邊型別決定了變數 能呼叫哪些方法,

右邊型別決定了最終使用的方法是哪個 - 優先呼叫自己重寫過的

口訣: 編譯看左邊, 執行看右邊

提前得知, 引用 到底是什麼型別的物件

animal -> abstract void eat()

cat -> void catchmouse() {}

dog -> void watchhouse() {}

多型: animal a1 = new cat();

animal a2 = new dog();

classcastexception: 型別轉換異常

解決方案: 轉換之前先判斷引用 實際上是不是要轉換的型別物件

引用a instanceof 子型別 => boolean

問 a 實際上是不是子型別物件

人體類  心臟類

車類 發動機類

種類: 成員內部類,靜態內部類,區域性內部類[匿名內部類]

成員內部類: 許可權 public,protected,(default),private

語法:public class outer

}使用:

內部類中, 可以隨意使用外部類成員

外部類中, 使用內部類成員時需要建立內部類物件

無關類中, 使用內部類成員

1.間接呼叫, 在外部類方法中呼叫內部類方法

main方法中, 呼叫外部類方法

2.直接呼叫, 需要建立內部類物件

外部類.內部類 a = new 外部類().new 內部類();

內部類和外部類有同名成員變數

外部類的成員變數: 外部類.this.變數

內部類的成員變數: this.變數

區域性內部類 : 在方法內部定義類, 只在方法中有效

在區域性內部類中, 使用區域性變數, 必須是final的

jdk8 後, 區域性變數事實上沒有發生改變, 那麼final可以省略

一次性的類, 只能用一次

不能使用許可權修飾符

區域性內部類, 需要類只使用一次, 優化 -> 匿名內部類

匿名內部類: 繼承抽象類或實現介面

語法: new 介面/抽象類()

匿名內部類, 只能用一次, new乙個物件

匿名物件, 只能使用一次, 只能呼叫一次方法

注意: 匿名內部類 和 匿名物件 不是一回事 ! ! !

靜態內部類 對比 成員內部類 => 靜態方法 和 成員方法

day08 物件導向 多型

package com.oop.demo07 public class package com.oop.demo07 public class person package com.oop.demo07 public class student extends person public void ...

day08多型和object類

多型 理解為事物存在的多種體現形態 人 男人,女人 動物 貓 狗 類 多個 貓 x new 貓 實體動物 y new 貓 1.多型的體現 父類的引用指向了自己的子類物件 父類的引用可以接收自己的子類物件 2.多型的提前 必須類與類之間有關係,要麼繼承要麼實現 3.多型的好處 多型大大提高了 的擴充套...

Day03 10目標 內部類 匿名內部類

其實是區域性內部類,是乙個沒有名字的區域性內部類。簡化 new 類名 介面 抽象類 形參 1.匿名內部類是乙個沒有名字的內部類。2.匿名內部類一旦寫出來,會自動建立乙個匿名內部類的物件返回。3.匿名內部類相當於是乙個子類型別的物件。匿名內部類是用於簡化 的.匿名內部類一旦寫出來,會自動建立乙個匿名內...