我只是对抽象类概念感到困惑。请清除我的怀疑。 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();


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

10-05 21:19