Java类,继承了new的构造函数

时间:2013-05-06 23:35:54

标签: java oop inheritance

以下几行意味着什么?

superclass sc = new subclass();
subclass sc = new superclass();

我见过的第一行是在我的计算机科学书中实现的,我不知道它意味着什么。 超类如何实现新的子类构造函数? 第二行它甚至是如何工作的?我以为该子类不继承超类构造函数?

OOP的新手并且很困惑。

3 个答案:

答案 0 :(得分:2)

简单 - 第二行无法编译。 (提示:写出来并在下次尝试。)

第一行是有道理的。也许以这种方式阅读会有所帮助吗?

superclass sup;
subclass sub = new subclass();
sup = sub;

在任何情况下,请注意您只是简单地将 make 作为子类。然后你可以在对超类的引用中保留它,因为子类超类的实例。

注意这与构造函数继承有 nothing 。构造函数从不继承。

答案 1 :(得分:2)

也许一个例子可以帮助你。以这种方式思考你的2行:

//Student extends Person

Person p = new Student();
Student s = new Person();

您可以很容易地注意到第一行是正确的,因为学生 。 但并非所有都是学生,所以这就是第二行错误的原因。

答案 2 :(得分:1)

第二行会出现编译错误。

在第一行中,超类保留子类的实例。在这里,我们可以看到“是一种”关系。例如

class Animal {}

class Dog extends Animal {}

class TestCode {
    public static void main(String[] args) {
        Animal a=new Dog(); // here a contains the instance of Dog
    }
}