只需要使用构造函数中的两个属性

只需要使用构造函数中的两个属性

问题描述:

我正在创建一个具有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”类继承其中两个属性的类。

任何帮助都很重要。

+0

您可以创建在'Person'一个构造函数,只有扩展它“BirthdayBoy”和“BirthdayBoy”两个必需的参数将其扩展为2个额外的必需参数 – kalenpw

+2

如果不需要来自超类的2个字段,那么这听起来像是一个糟糕的设计选择。在概念上继承一个类意味着丰富它并专门化它,而不是相反。 – Jack

+0

@kalenpw谢谢!我认为这解决了我的问题的一部分。现在是这样的,如果我创建另一个构造函数来获取2个参数,而另一个构造函数有4个,那么如果它们使用相同的名称调用会产生问题吗?我是否应该改变它以便在其他课程上调用它? –

你可以在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个参数。您可以选择尽可能多的重载构造函数。