当前位置: 首页 > 知识库问答 >
问题:

抽象类可以实例化吗?[副本]

柳越
2023-03-14
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();
    }
} 

我知道抽象类不能被实例化,但在这段代码中被混淆了。这个代码到底是什么意思?

共有1个答案

东门晟
2023-03-14

这里的微妙之处在于“{}”。这意味着您为抽象类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抽象类不能实例化。然而,(抽象类)具有以下方法: 获取文档中提供了有关JAXP和Properties的更多详细信息。有谁能对此作更清楚的解释吗?。

  • 我在SCJP6中读到抽象类不能实例化。但在某个地方读到它们可以实例化。是真的吗?我是Java的新手,希望有人能详细解释一下。一个例子也是很好的。

  • 问题内容: 在我的一次采访中,有人问我“我们是否可以实例化一个抽象类?” 我的回答是“不,我们不能。” 但是,面试官告诉我“错了,我们可以。” 我对此有些争论。然后他告诉我自己在家尝试这个。 在这里,我正在创建我的类的实例和抽象类的调用方法。有人可以向我解释一下吗?面试中我真的错了吗? 问题答案: 在这里,我正在创建我的课程的实例 不,你不是在这里创建抽象类的实例。而是要创建抽象类的匿名子类的实例

  • 问题内容: 我读过我们只能通过继承抽象类来实例化它,但是我们不能直接实例化它。 但是,我看到我们可以通过调用另一个类的方法来创建具有抽象类类型的对象。 例如- 是一个抽象类,我们可以通过在该类中调用function 来实例化它: 抽象类如何在这里实例化? 问题答案: 您不能直接实例化一个抽象类,但是可以在没有具体类的情况下创建一个匿名类: 这也适用于接口。

  • 我知道类和抽象类的主要区别是,抽象类不能被实例化, 但是我可以为抽象类创建对象 我用新的关键字创建了抽象的对象 我有一些问题在 Inet 上没有正确的答案, new关键字是否用于实例类? 2)实例只不过是对象吗? 3)mEarth被称为物体(地球的实例)吗? 现在我可以调用任何方法(作为回调或作为值返回)mearth . sand();mearth . land();使用地球物体

  • 问题内容: 我创建了一个空的抽象类,并从中继承了该类: 我期望输出是 但是,我得到的是 如果我删除(这样就变成一个普通的类)和/或如果我设置了其他值,问题(显然)就消失了。 这里发生了什么? 问题答案: 这实际上不是ABC的问题,而是PyMongo的问题。有一个关于它的问题在这里。似乎pymongo重写以返回某种数据库类。这意味着将返回一个数据库对象,该对象在布尔上下文中为true。这使ABCMe