Java中,这样算不算对抽象类进行创建对象实例化

Java中,这样算不算对抽象类进行创建对象实例化

问题描述:

 abstract class Inter {
    public abstract void print();
    public abstract void run();
}

class Nonym {
    public static void main(String...args) {
        Inter i = new Inter() {
            public void print() {
                System.out.println("good");
            }

            public void run() {
                System.out.println("run");
            }
        };
        i.print();
        i.run();
    }
}

实际上你是创建了Inter的子类,父类的类型指向了子类的实例,这事允许的。

抽象类智能继承不能直接new

这种写法是创建了一个Inter的匿名子类对象,抽象类不能创建对象

你这个不是实例化,只是实现的抽象类的方法。 如果你把方法去掉,单独去NEW一个看看哈。

实际上你是创建了Inter的子类

你这个是新建了一个类,名字一样而已。

这样相当于创建了一个继承自Inter的子类的实例

你这种写法是创建了一个匿名内部类,实质是对抽象类创建了一个没有名字的子类,并重写了父类的方法,也就是说是对抽象类的子类对象创建了一个实例,不能算是对抽象类创建对象实例化