java - 抽象类可以实例化吗?

标签 java

<分区>

abstract class A {
    public void disp() {
        System.out.print("Abstract");
    }
}

public class B {
    public static void main(String args[]) {
        A object = new A(){ };
        object.disp();
    }
} 

我知道抽象类不能实例化,但对这段代码感到困惑。 这段代码究竟是什么意思?

最佳答案

这里的微妙之处在于“{}”。这意味着您显式为抽象类 A 的缺失部分(缺失部分是抽象方法)提供匿名实现,允许您实例化它。

但是A中没有抽象方法,因此匿名实现是空的。

用至少一个抽象方法展示行为的例子:

public abstract class A {
    public abstract void bar();
    public void disp() { System.out.print("Abstract"); } 
}

public class B { 
    public static void main(String args[]) { 
        A object = new A() { 
            @Override public void bar() { System.out.print("bar"); } 
        }; 
        object.disp(); //prints "Abstract" 
        object.bar(); //prints "bar"
    } 
} 

关于java - 抽象类可以实例化吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32358498/

相关文章:

java - 检索从反射调用的方法中抛出的 *real* 异常

java - 寻找最近的非互质数

java - 当我尝试插入通知类型对象时,子实体也会尝试插入

java - 由于 "Unable to open nested entry",无法运行 Spring-Boot jar 文件

java - 如何将 JDBC 结果集数据转换为插入查询?

java - 无法连接mysql服务器连接

java - Spring security oauth2 修改响应主体连接

java - BoxLayout padding组件动态(两列)

Java 数组列表 : Difference between Copy Constructor and Copying via assignment

java - 保存网站 Activity 的更好选择