我开始进行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();
}
}
输出为:我是第一个method()。
如果我将其修改为:
Communication communication = new Communication() {
@Override
public void FirstMethod(){
System.out.println("I've been called from Main");
}
};
输出为:我是从Main打电话来的。
有人可以解释一下这是一种实例还是这是什么概念?
最佳答案
这称为
匿名类
定义:
声明了没有类名的内部类称为匿名内部类。
在匿名内部类的情况下,我们同时声明和实例化它们。通常,它们在您需要覆盖类或接口的方法时使用。