为什么变量不在Java中的子类中继承?

时间:2018-01-18 05:03:04

标签: java inheritance

我有两节课。 Person类和Patient类,其中Person为父级,Patient为子级。我有变量firstNamelastName,变量name是Person类中两者的组合,如下所示:

public Person (String initialFirstName, String initialLastName){
    firstName = initialFirstName;
    lastName = initialLastName;
    name = firstName + " " + lastName;
}

但是当我希望Patient类继承这些变量时,它就赢了。

public Patient (String initialFirstName, String initialLastName){
    super(initialFirstName);
    super(initialLastName);
}

我不确定为什么它不会工作。我唯一能想到的是,在继承变量时你不能有两个超级,但我不确定。

3 个答案:

答案 0 :(得分:1)

试试这个

public Patient (String initialFirstName, String initialLastName){
   super(initialFirstName,initialLastName);
}

而不是

public Patient (String initialFirstName, String initialLastName){
    super(initialFirstName);
    super(initialLastName);
}

答案 1 :(得分:1)

  

调用superclass构造函数 必须是第一行   子类构造函数。

无论如何,下面的代码行应该给你编译错误

public Patient (String initialFirstName, String initialLastName){
    super(initialFirstName);
    super(initialLastName);
}

应该是

public Patient (String initialFirstName, String initialLastName){
    super(initialFirstName, initialLastName);
}

另外,请注意,

  

使用super(参数列表),带有 匹配参数列表的超类构造函数称为

因此,引用代码super(initialFirstName);会给出编译错误,因为超类中没有匹配的参数列表构造函数。

答案 2 :(得分:0)

您可以使用此

public Patient (String initialFirstName, String initialLastName){
   super(initialFirstName,initialLastName);
}

或者,如果这两个字段是受保护的或公共的,并且您不希望由构造函数设置,那么您可以尝试这个

public Patient (String initialFirstName, String initialLastName){
   super.firstName = initialFirstName;
   super.lastName = initialLastName;
}