java - 我们可以创建一个抽象类的对象吗?

标签 java oop instance abstract-class

我只是对抽象类的概念感到困惑。请解开我的疑惑。 Abstract 类的定义说我们不能创建此类的对象,然后我们称之为 A a = new A() { }。示例如下:

public abstract class AbstractTest {
    public abstract void onClick();
    public void testClick() {

    }
}

public class A {
    AbstractTest test = new AbstractTest() {
        @Override
        public void onClick() {

        }
    };
}

那么test是一个对象还是什么?

最佳答案

testAbstractTest 的匿名具体子类的对象(注意它实现了AbstractTest 的所有抽象方法),这就是为什么可以实例化这个子类的原因。

另一方面,

AbstractTest test = new AbstractTest();

不会通过编译,因为那会尝试实例化一个抽象类。

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

相关文章:

c++ - 从函数返回错误的实例

java - 我正在为 android 进行倒计时,但我不知道如何创建它

java - Long 包含许多 int

c++ - = 运算符是否在 C++ 中调用构造函数/new?

Array对象数据的Java、ErroMax和Min?

ios - Cocos2d : Can't seem to create child sprites correctly using class or instance method

Python - 从元组返回一个值

java - ArrayAdapter 中的 OnClickListener 正在对错误的行执行操作

java - 如何使用 Gson 将对象的 JSON 字符串转换为 ArrayList?

java - 我如何检查数组列表是否包含某个字符串