可能的重复:
为什么this()和super()必须是构造函数中的第一条语句?
为什么子类构造函数必须显式调用超类构造函数?这是什么原因呢?
子类甚至隐式调用超类中的默认构造函数,而超类是非参数化的。我们必须在向构造函数传递参数时显式调用。
他们没有。
如果不显式调用超构造函数,就相当于调用无参数的超构造函数。
public class Sub
{
public Sub()
{
// Do some stuff
}
}
相当于:
public class Sub
{
public Sub()
{
super();
// Do some stuff
}
}
如果要指定参数,则必须显式调用超构造函数。这是相当合理的,imo-你真的想让编译器猜测你想要提供的参数吗?
我目前正在学习Java的继承,我在理解它方面遇到了很大的困难,但是我不能理解的一个主要问题是为什么在下面的示例中有必要调用一个超类构造函数,它有什么帮助?此示例来自Oracle的方法教程。 我最初的想法是,会缩短当前构造函数中参数的代码,它只会接受父类中传入的值并将其添加到子类中(如下所示): 但是,正如我已经知道的那样,这是错误的,并且再次将我带到了真正做什么的问题上。我会非常感谢一些形式的解释
子类被迫显式调用基类的构造函数似乎没有意义。如果用户可以创建自己的构造函数,而不局限于基类,将会更加灵活。有谁能告诉我为什么JAVA里要强制这种行为?这有什么好处呢?
问题内容: 为什么Eclipse总是在构造函数上给我错误: 错误是: 类 密集板 类 板 问题答案: 您只需执行此操作即可将值发送到父类。
为什么第一个输出有柱线 = 空?是因为在创建类 B 之前调用了 B.foo() 吗?如果是,那么为什么可以调用 B.foo()?还是因为 B.foo() 中的字段栏试图从 A 获取柱线字段但无法访问它? 我的问题与链接的问题不同,我不是在问调用顺序,我是在问为什么第一个输出为空?另一个问题不是关于字段或空变量。 我不明白B.foo中的bar变量是如何为空的,如果它是在A和B中定义的。
问题内容: 我正在尝试创建一个将字段作为参数的构造函数,然后将其放入存储在超类中的字段中。这是我正在使用的代码 在超类中,我用 我有一个访问器方法 我收到一个错误“ 味道在超类中具有私有访问权 ”,但是我认为这无关紧要,因为我正在调用将其返回到字段的访问器方法? 问题答案: 您应该做什么: 在您的超类中添加一个构造函数: 在Crisps类中: 注释 对您的问题的一些评论: “在超类中,我已经用”
问题内容: 我有两个类,和,扩展了前一个类。 具有以下构造函数: 我将注意到所有实例变量都已设置为private。 同时,具有以下构造函数: 但是,这为我的构造函数引发了“找不到符号”错误。 我尝试使用,但是我的超类的私有范围阻止了这种情况。 我发现向我的构造函数中添加字段并允许我调用超级构造函数,但是我想知道是否存在一种无需在子类构造函数中传递其所有参数的情况下调用超级构造函数的方法? 问题答案