java - 抽象类 'instantiation' 及其方法体

标签 java

我正在开始 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");
         }
      };

输出是:我被从 Main 调用。 有人可以解释一下这是否是一种实例化或者这是什么概念?

最佳答案

这被称为

Anonymous Class

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

对于匿名内部类,我们同时声明和实例化它们。一般来说,当您需要重写类或接口(interface)的方法时,就会使用它们。

关于java - 抽象类 'instantiation' 及其方法体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42668797/

相关文章:

java - 带参数的 Dagger 构造函数注入(inject)

java - 为什么我的 BufferedReader 代码会泄漏内存?

java - 循环返回值

java - 我可以将没有包的 Java 类放在不同的目录中吗?

java - final 在构造函数和属性中

java - 是否可以添加另一个字段来查找和过滤 java 中 mongodb 数据库的结果?

java - 无法编写基于每个项目保存的长期过滤掉 RecyclerView 中的项目的算法

java - 从sql数据库中删除行

java - MediaPlayer从毫秒转换为分钟和秒

java - selenium-java中find元素的源代码是什么?