为什么Java不允许从父构造函数创建子对象

时间:2017-03-27 10:59:39

标签: java

class Human{
    public void eat()
    {
        System.out.println("Human is eating");
    }
}
class Boy extends Human{
    public void eat(){
        System.out.println("Boy is eating");
    }
    public static void main( String args[]) {
        Boy obj1 = new Human();
        //Here it shows incompatible types
    }
}

我是java新手 - 有人能让我知道为什么在使用父构造函数时无法创建子类的上述对象吗?

1 个答案:

答案 0 :(得分:1)

在你的情况下,男孩 IS-A 人类,所以你可以用男孩的构造函数创建人类。但是因为(根据OOP)人类不是男孩,因此你不能创建调用Human的构造函数的Boy的实例。 因此,您无法使用超级或父级构造函数直接创建子实例。 男孩男孩=新人类();不可能 人类hm =新男孩();可能的