【发布时间】:2018-11-23 08:05:30
【问题描述】:
public class Animal
{
public String name;
public boolean legs;
public boolean eyes;
public Animal(String name, boolean legs, boolean eyes)
{
this.name = name;
this.legs = legs;
this.eyes = eyes;
}
}
public class Dog extends Animal
{
String name;
boolean legs;
boolean eyes;
public boolean vacinated;
public boolean rabid;
public Dog(boolean vacinated, boolean rabid, String name, boolean legs, boolean eyes)
{
super(name, legs, eyes);
this.vacinated = vacinated;
this.rabid = rabid;
}
}
public class Bulldog extends Dog
{
String name;
boolean legs;
boolean eyes;
public boolean vacinated;
public boolean rabid;
public String breedtype;
public Bulldog(String breedtype, String name, boolean legs, boolean eyes, boolean vacinated, boolean rabid)
{
super(vacinated, rabid, name, legs, eyes);
this.breedtype = breedtype;
}
}
如您所见,如果这种情况一直持续下去,换句话说,如果我有一个很长的继承线,我是否真的需要一遍又一遍地列出每个变量?我只是觉得有一种更有效的方法可以做到这一点。
【问题讨论】:
-
我真的需要一遍又一遍地列出每个变量吗? - 不。您的变量是公开的,您可以从子类中访问它们。如果您决定遵循标准并将它们设为私有,您仍然可以通过 setter 和 getter 访问它们。所以,在这两种情况下,不,你不必重复它们。
-
所以我不需要重新声明它们,但我需要在我的构造函数中将它们作为参数变量?
-
没有。您当前在同一个类中有多个
name变量。由于成员变量不是多态的,这几乎肯定不会达到您的预期。 -
@Andrew 是的,您仍然需要在构造函数中使用它们。但是您可以拨打
super(...)来避免重新分配它们。 -
您需要对象和类的教程,而不是这个网站。
标签: java inheritance this parent super