我開始Java編程,並且遇到了抽象類。我知道你不能創建實例化它們,而不創建具體的類來擴展它們成爲子類。但是,當我嘗試使用這些代碼並且運行正常時,我感到非常困惑。抽象類的「實例化」與其方法體
abstract class Communication{
public void FirstMethod()
{
System.out.println("I am first method()\n");
}
}
public class Main{
public static void main(String[] args){
Communication communication = new Communication() {
@Override
public void FirstMethod(){
super.FirstMethod();
}
};
communication.FisrtMethod();
}
}
輸出是:我第一種方法()。 如果我將它修改爲:
Communication communication = new Communication() {
@Override
public void FirstMethod(){
System.out.println("I've been called from Main");
}
};
輸出是:我已經從主要調用。 有人可以請解釋一下,如果這是一種實例或這是什麼概念?
這就是所謂的匿名內部類。 – ntalbs
as ntalbs說,這是'匿名內部類'它是某種技術?!你可以在你想創建一個類的實例時使用它,並且重寫它的一些方法,而不用實際創建一個擴展第一個類的新子類。主要用在聽衆... – Yazan
作爲一個側面說明,我想他們應該少用了,現在有[功能接口](https://docs.oracle.com/javase/8/docs/api/java/util /function/package-summary.html) – Aaron