如何创建抽象类和接口的对象

2022-09-02 23:13:24

如何创建抽象类和接口的对象?我知道我们不能直接实例化抽象类的对象。


答案 1

你不能实例化一个抽象类或一个接口 - 你可以实例化它们的子类/实现者之一。

这样的事情的例子在Java集合的使用中是典型的。

List<String> stringList = new ArrayList<String>();

您使用的是接口类型作为类型,但实例本身是 .List<T>ArrayList<T>


答案 2

要创建抽象类的对象,只需使用new,就像创建其他非抽象类的对象一样,只有一个很小的差异,如下所示:

package com.my.test;

public abstract class MyAbstractClass {
    private String name;

    public MyAbstractClass(String name)
    {
        this.name = name;
    }

    public String getName(){
        return this.name;
    }


}

package com.my.test;

public class MyTestClass {

    public static void main(String [] args)
    {
        MyAbstractClass ABC = new MyAbstractClass("name") {
        };

        System.out.println(ABC.getName());
    }

}

以同样的方式,您可以创建接口类型的对象,如下所示:

package com.my.test;

public interface MyInterface {

    void doSome();
    public abstract void go();

}

package com.my.test;

public class MyTestClass {

    public static void main(String [] args)
    {

        MyInterface myInterface = new MyInterface() {

            @Override
            public void go() {
                System.out.println("Go ...");

            }

            @Override
            public void doSome() {
                System.out.println("Do ...");

            }
        };

        myInterface.doSome();
        myInterface.go();
    }

}