FJ 匿名內部類預習

2021-10-08 12:16:16 字數 2571 閱讀 3103

inte***ce inter 

class outer */}

public void print() .show();}*/

}}

格式: new 要繼承的類或者要實現的的介面()就相當於實現了介面,也就相當於建立了inner物件,所以可以直接呼叫show方法。上面不是測試了(new inner().show() 和 上面格式呼叫show方法輸出是一模一樣).

new inter() 

}

2.上面複製的整個**這一塊就相當於inter的子類物件,也就是相當於這樣inner in = new inner();

3. 為什麼寫這個匿名內部類呢?因為你看outer類裡面有乙個類可以實現inter介面(也就是inter的子類),然後可以重寫介面裡面的抽象方法,然後經過建立物件呼叫show方法. 但是如果我們沒有inner這個類,又怎麼呼叫介面裡面的抽象方法呢!!!這就用到了上面老師講的兩個相當於

public class not_name_class_inte***ce01 

}inte***ce inter

class outer

public void show2() }*/

public void print()

public void show2()

}.show1();

new inter()

public void show2()

}.show2();}}

1.下面是匿名內部類呼叫方法:這樣是可以的

new inter() 

public void show2()

}.show1();

new inter()

public void show2()

}.show2();

解釋:但是匿名內部類得初衷是為了少寫**但是你看匿名內部類呼叫方法方式太複雜了.

2.改善

inter in = new inter() 

public void show2()

};in.show1();//編譯看左邊(看介面裡的),執行看右邊看子類裡面的

in.show2();//編譯看左邊(看介面裡的),執行看右邊看子類裡面的

//上面的**和下面的意思是一樣的

inner i = new inner();

解釋:因為new inter() {}整個這一塊相當於inter的子類物件,在這個物件前面加上乙個inter in不就是相當於父類型別的變數指向子類物件.這不就是多型嗎!其實它就是多型. 它和 inner i = new inner();是乙個意思

in.show1();//編譯看左邊(看介面裡的),執行看右邊看子類裡面的

in.show2();//編譯看左邊(看介面裡的),執行看右邊看子類裡面的

總結: 匿名內部類什麼時候最合適使用,當介面裡面只有乙個抽象方法的時候.有多個時候就用多型吧.

/*

匿名內部類補足**練習

*/class demo11_innerclass

}inte***ce inter

class outer

}

分析:

我們在主方法裡看到outer.method()竟然可以呼叫方法,我們學的只有物件才能呼叫方法,說明什麼?說明outer呼叫method()方法後返回了乙個物件,然後呼叫show()方法.

呼叫show方法必須要有個類實現介面,並且實現這個介面裡面的show方法,然後才能呼叫show方法.

實現介面的類,就是這個介面的子類,然後想想咱們學的多型,父類裡面的方法,子類重寫後的呼叫過程(父類型別的引用指向子類物件,編譯看左邊,執行看右邊)所以可以判斷這個返回值型別應該寫inter,也就是用父類來接收.這樣返回的物件是inter的子類物件.物件的引用型別是inter.

4.下面來實現這個**

/*

匿名內部類補足**練習

*/class demo11_innerclass

}inte***ce inter

class outer

};*/

//注釋的這個**還可以這樣寫

inter in = new inter()

};return in;}}

5. 補充:method方法可以直接呼叫,說明method方法是靜態的,然後它接著還能呼叫,說明呼叫method方法返回的是乙個物件.

1.匿名內部類以引數傳遞練習

/*

匿名內部類以引數傳遞練習

*/class demo12_innerclass

});}

pulic static void function(inter in)

inte***ce inter

2.匿名內部類的.class檔案沒有名字.

內部類,匿名內部類

內部類 概念 自己想到的 內部類是一種可以直接訪問外部類的一類事物 內部類訪問外部類中的成員,包括私有。之所以可以訪問外部類的成員,是因為內部類持有了外部類的乙個引用,格式為 outer.this.x 外部類訪問內部類成員,需要宣告內部類的物件。其他類訪問內部類方法 當內部類處在成員變數的位置時,就...

內部類 匿名內部類

把類定義在其他類的內部,這個類就叫內部類。內部類分為 成員內部類 區域性內部類。內部類訪問特點 內部類可以直接訪問外部類的成員,包括私有。外部類訪問內部類的成員,必須建立物件。區域性內部類是定義在乙個方法或者乙個作用域裡面的類。public class outer 在區域性位置建立內部類物件,調內部...

內部類 匿名內部類

package org.lgy.study.innerclass public class anonymoustest public static void main string args public string getname public double getprice inte ce p...