【发布时间】:2017-06-14 02:46:15
【问题描述】:
我有一个包含 3 个构造函数的超类,我想知道是否有更聪明的方法来编写子类构造函数
public class Person{
private String name;
private int age;
private String homeTown;
public Person(String name){
this.name = name;
this.age = 18;
this.homeTown = "Atlanta";
}
public Person(String name, int age){
this.name = name;
this.age = age;
this.homeTown = "Atlanta";
}
public Person(String name, int age, String homeTown){
this.name = name;
this.age = age;
this.homeTown = homeTown;
}
我还有一个继承超类的子类
public class Student extends Person{
private double avgGPA;
private int ID;
private String[] classes;
public Student(double avgGPA, int ID, String[] classes, String name){
super(name);
this.avgGPA = avgGPA;
this.ID = ID;
this.classes = classes;
}
public Student(double avgGPA, int ID, String[] classes, String name, int age){
super(name, age);
this.avgGPA = avgGPA;
this.ID = ID;
this.classes = classes;
}
public Student(double avgGPA, int ID, String[] classes, String name, int age, String homeTown){
super(name, age, homeTown);
this.avgGPA = avgGPA;
this.ID = ID;
this.classes = classes;
}
我的子类工作正常并且运行没有错误,但我想知道是否有另一种方法可以为子类编写构造函数而无需编写相同的构造函数 3 次,只是因为超类有 3 个不同的构造函数。
【问题讨论】:
-
为什么不是一个不可变的类,它有一个私有构造函数和 3 个静态工厂方法来接受参数?
-
大量重载的构造函数是一种反模式恕我直言;您应该考虑改用构建器模式。
-
恐怕我对不可变类这样的概念不熟悉。如果你能告诉我,我会查一下。
标签: java inheritance constructor