接口跟接口之間存在繼承關係java
一個接口能夠繼承多個接口this
一個非抽象類:必須實現接口中的全部方法對象
一個抽象類實現接口 能夠不實現接口中的方法 可是繼承與抽象類的類必需要是實現接口中的方法繼承
多態:一個對象的多種表現形態(父類的引用類型變量指向了字類的對象)接口
多態的知足條件 必須有繼承關係 必須重寫父類的方法編譯器
多態的使用注意點:虛擬機
總結:多態狀況下 子父類存在同名的成員(成員指的是成員變量和方法(方法包括靜態方法和普通方法)),訪問的都是父類 除了同名的非靜態方法是訪問子類編譯
Java編譯器原理:class
編譯看左邊 執行不必定看右邊變量
編譯看左邊:java編譯器在編譯的時候會檢測引用類型中是否含有指定的成員,若是沒有就會報錯
多態的使用場景:
1.多態能夠用於作形式參數,可讓方法接受更多的類型
2.多態用於返回值類型 能夠返回更多的數據類型
多態的另外一種表現形式:
接口的引用類型指向實現類
實現關係下的多態:
接口 變量 =new 接口實現類();
內部類:一個類中定義另一個類 ,這樣的類叫內部類
內部 的文件名: 外部類名$內部類名
內部類分兩種
如何訪問成員內部類:
方式1:在外部類中定義一個方法建立內部類對象,再在經過對象進行訪問
方式2:直接在其餘類中建立內部類對象,直接經過對象訪問
格式:
外部類 . 內部類 變量名 = new 外部類(). New 內部類();
內部類的使用注意點:
內部類使用的好處‘
內部類中是能夠直接訪問外部類的全部成員
通常在什麼狀況下使用內部類:
咱們在描述一個A對象,發現A對象中又須要有一個對象B很複雜,B對象又要訪問A中的數據,這個時候用外部類來描述B對象更方便
局部內部類:
在類的方法中定義的類,這樣的類叫局部內部類
局部內部類只能經過第一種方式訪問(在內部類所在的方法裏直接建立內部類對象 ,用這個對象訪問內部類的方法)
局部內部類的使用注意:
匿名內部類:沒有類名的內部類
匿名內部類的好處:簡化書寫
使用匿名內部類使用前提:
匿名類的是使用
class Outer
{
//不用匿名
public void print(){
//匿名的Dog
//匿名內部類 : 只是沒有名字 ,其餘的個普通類沒有區別。
Animal a = new Animal()這個實際上是一個類的匿名內部類,具體是什麼類就不知道了
Animal a = new Animal(){ // 匿名內部類(子類)
//具體實現
public void run() {
System.out.println("狗在跑");
}
public void sleep(){
System.out.println("狗在睡覺");
}
};
a.run();
a.sleep();
}
}