我们可以创建抽象类的对象吗?

mad*_*y d 2 java 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() {

        }
    };
  }
Run Code Online (Sandbox Code Playgroud)

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

Era*_*ran 5

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

另一方面,

AbstractTest test = new AbstractTest();
Run Code Online (Sandbox Code Playgroud)

不会通过编译,因为这将是一个实例化抽象类的尝试.