【发布时间】:2019-01-18 06:50:54
【问题描述】:
public class Top{
public int top = 1;
public Top(int top){ this.top = top; }
}
public class Middle extends Top{
public Middle(int top){
super(top);
this.top = this.top + top;
}
}
public class Bottom extends Middle{
public Bottom(){ super(3); }
public Bottom(int top){
super(top);
this.top = top;
}
}
对于这个类,我很困惑为什么 Top t = new Top() 是一个无效的声明?是否必须有一个传递参数才能使这个正在创建的对象 t 有效?
为什么 1) Top t = new Bottom() 和 2) Top t = new Top(3) 有效?我是 java 新手,底层类是否有一个空的构造函数,所以 1) 有效吗?
另外,例如 Top t = new Middle(2),我将如何在不使用代码的情况下继续找出 t.top?就像点运算符总是让我失望一样,我在想的是对象“t”与顶部变量的属性相关联吗?它应该等于 4,但我试图弄清楚这一点,但这些概念现在对我来说似乎很陌生。任何解释将不胜感激。
【问题讨论】:
-
将您要询问的代码以文本形式发布在问题本身中。不作为图像的链接。我们无法从图像中复制和粘贴。盲人无法阅读图像。
-
多态性。而且因为
Top不是抽象的。 -
为什么
Top应该知道子类提供了默认构造函数? -
首先也不存在constructor-inheritance这样的东西