创建抽象类或匿名类的实例

2022-09-03 08:39:43

在此代码中,它是创建抽象类还是匿名类的对象?请告诉我。我在这里有点困惑。

public abstract class AbstractDemo {

    abstract void showMessage();
    abstract int add(int x,int y);

    public int mul(int x,int y){
        return x+y;
    }


    public static void main(String[] args) {
        AbstractDemo ad = new AbstractDemo() {

            @Override
            void showMessage() {
                // TODO Auto-generated method stub

            }

            @Override
            int add(int x, int y) {
                // TODO Auto-generated method stub
                return 0;
            }
        };

        System.out.println(ad.mul(10, 12));
        System.out.println(ad.getClass());
    }

}

答案 1

创建一个扩展抽象类的匿名类。

在下面的片段中,您正在扩展并提供其抽象方法的实现。AbstractDemo

new AbstractDemo() {
    @Override
    void showMessage() {
        // TODO Auto-generated method stub
    }

    @Override
    int add(int x, int y) {
        // TODO Auto-generated method stub
        return 0;
    }
};

答案 2

以下是在这段简短而无辜的代码中发生的事情:

AbstractDemo ad = new AbstractDemo() {

            @Override
            void showMessage() {
                // TODO Auto-generated method stub

            }

            @Override
            int add(int x, int y) {
                // TODO Auto-generated method stub
                return 0;
            }
        };
  1. 定义了新类(没有名称,因此称为匿名类)
  2. 这个新类扩展了类AbstractDemo
  3. 的抽象方法在此新类中被重写AbstractDemo
  4. 已创建此新类的新实例并将其分配给变量ad

在此处阅读有关 Java 的更多信息anonymous classes