我已經看到,構造函數不是一個界面內允許的,但是這是怎麼允許?:爲什麼LocationListener有一個構造函數,如果它是一個接口?
LocationListener的=新LocationListener的(){ 等}
我已經看到,構造函數不是一個界面內允許的,但是這是怎麼允許?:爲什麼LocationListener有一個構造函數,如果它是一個接口?
LocationListener的=新LocationListener的(){ 等}
是你正確的接口不能有構造函數但是你描述的是匿名類。在這一行中,您正在創建新類的對象,但沒有擴展LocationListener的名稱(並且它的實現位於大括號之間)。 如果你想了解一些更多關於匿名類看這裏:https://docs.oracle.com/javase/tutorial/java/javaOO/anonymousclasses.html
這是匿名類的方法。爲了說清楚,這裏是一個例子。
interface Animal {
public void cry();
}
要創建Animal實例的對象,您需要先實現動物接口。
class Lion implements Animal {
public void cry() {
System.out.println("Roar");
}
}
然後,使用通常的方法創建一個對象:
Animal theLion = new Lion();
另一種方法是創建使用匿名類Animal對象。現在
Animal theTiger = new Animal() {
public void cry() {
System.out.println("Grrr");
}
}
,無論對象應該能夠調用cry
方法:
theLion.cry();
theTiger.cry();
乾杯!
感謝您的回覆,但爲什麼它需要構造函數(Animal()),如果在接口中沒有定義構造函數? –
,因爲Anonymous類是聲明類如Lion類的簡寫。 – user1506104
感謝您的回覆,但爲什麼它需要一個構造函數(LocationListener())? –