只需要使用构造函数中的两个属性
问题描述:
我正在创建一个具有4个属性的对象“Person”:String name,String lastName,char gender和int age。这个类已经有一个工作正常的构造函数,它将信息扩展到我拥有的其他对象。只需要使用构造函数中的两个属性
但是,我现在有一个名为“birthdayBoy”的特殊对象,它只需要2个这些属性加上2个新的属性(String birthdayCity,String school)。如果我从“Person”对象继承构造函数,它会问我包含4个属性的链(String,String,char,int),这对我不起作用。我没有创建Main类来调用和测试对象,到目前为止,我只创建了包含这些对象的类,原因是因为我想知道这是我需要修复的类,还是我应该创建一个只从“Person”类继承其中两个属性的类。
任何帮助都很重要。
答
你可以在Person
创建一个构造函数,只有具有BirthdayBoy
的两个必需的参数,然后在BirthdayBoy
与2点额外要求的参数
public class Person{
String firstName;
String middleName;
String lastName;
int age;
public Person(String fName, String lName){
firstName = fname;
lastName = lName;
}
//Your 4 parameters constructor with the same name
public Person(String fName, String mName, String, lName, int newAge){
firstName = fName;
middleName = mName;
lastName = lName;
age = newAge;
}
}
public class BirthdayBoy extends Person{
String birthMonth;
int birthYear;
public BirthdayBoy(String fName, String lName, String bMonth, int bYear){
super(fName, lName);
birthMonth = bMonth;
birthYear = bYear;
}
}
+0
非常感谢!这解决了我的疑问。我将创建仅接收这2个参数的第二个构造函数 –
答
在您的基类“Person”中,有2个构造函数。一个需要4个参数,另一个接受2个参数。您可以选择尽可能多的重载构造函数。
您可以创建在'Person'一个构造函数,只有扩展它“BirthdayBoy”和“BirthdayBoy”两个必需的参数将其扩展为2个额外的必需参数 – kalenpw
如果不需要来自超类的2个字段,那么这听起来像是一个糟糕的设计选择。在概念上继承一个类意味着丰富它并专门化它,而不是相反。 – Jack
@kalenpw谢谢!我认为这解决了我的问题的一部分。现在是这样的,如果我创建另一个构造函数来获取2个参数,而另一个构造函数有4个,那么如果它们使用相同的名称调用会产生问题吗?我是否应该改变它以便在其他课程上调用它? –