我开始进行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打电话来的。
有人可以解释一下这是一种实例还是这是什么概念?

最佳答案

这称为


  匿名类


定义:
声明了没有类名的内部类称为匿名内部类。

在匿名内部类的情况下,我们同时声明和实例化它们。通常,它们在您需要覆盖类或接口的方法时使用。

07-26 08:51