子类构造函数类如何中和父构造函数?
我的意思是在Child构造函数中我们必须使用super() - 是否存在创建父对象的方法?
以super为例:
class abstract Parent{
protected String name;
public Parent(String name){
this.name=name;
}
}
class Child extends Parent{
public Child(String name,int count){
super(name);
}
}
答案 0 :(得分:4)
“父母”和“孩子”在这里不合适。一个孩子不是一种父母(我当然希望我的孩子至少再过十年,但这是另一回事)。
考虑使用不同名称的相同代码:
class abstract Animal{
protected String name;
public Animal(String name){
this.name=name;
}
}
class Elephant extends Animal{
public Elephant(String name,int count){
super(name);
}
}
现在,你怎么能有一只不是动物的大象?
答案 1 :(得分:1)
扩展父对象,初始化子对象时初始化对象。作为初始化的要求,父母需要一个名字。这只能在子对象的初始化中给出。
所以回答你的问题,没有
答案 2 :(得分:1)
为什么你要继承一些东西而不是构建它?如果您的代码需要,那可能是因为糟糕的设计。 Java确实需要你调用父的构造函数。
答案 3 :(得分:1)
子类可以通过super.ParentClassVariable = thingToBeChanged更改父构造函数中指向的对象;
class Parent
{
BufferedReader inKeyboard;
public Parent()
{
inKeyboard = new BufferedReader (new InputStreamReader(System.in));
}
}
class Child extends Parent
{
public Child()
{
super.inKeyboard = new BufferedReader(new FileReader(filename));
}//changes the pointer in the parent object to point to a different reader
}
现在当你创建一个子对象时,而不是在Parent使用...(System.in)中的方法作为输入,Parent中的方法将使用...(文件名)