【发布时间】:2015-12-22 04:35:57
【问题描述】:
考虑以下几点:
public class parent {
int x;
parent() {
x = 5;
}
}
public class child extends parent {
int y;
child() {
super();
y = 10;
}
public static void main(String[] args) {
parent p = new child();
System.out.println(p.y);//can't access variable y
}
}
这里子类的构造函数被父类的对象调用。我在做Android编程时遇到过很多次这种情况。 我的问题是为什么允许这样做?子类的构造函数可能会初始化其他成员,但它们的蓝图可能不会像上述情况那样在父类中定义。
【问题讨论】:
-
提示:对象
p类型及其基本类型是什么?下一个y在child类中声明。 -
"这里子类的构造函数被父类的对象调用。" - 不,您定义了一个
child类型的对象,但您的其余代码将其视为parent的对象。 -
希望您有一本字典,您可以在其中查找“扩展”。在这种情况下(
child extends parent),它意味着子类拥有父类的所有内容,以及它自己的一些字段和方法。 -
注意:在 Java 中,overwhelming 约定是将类名大写,例如
Parent,不是parent,和Child,不是child。您不必在自己的代码中遵循约定,但它很有用,并且在与他人共享代码时(例如,在提问时)遵循约定非常有用。 :-)
标签: java oop object inheritance