java如何在扩展类中创建构造函数
我试图在扩展类中创建一个构造函数,以便在主类中创建对象。当我生成默认的eclipse构造函数时,它会显示我的超类的所有字段,当我试图在main中创建对象时,我需要放置所有字段
这是我的个人课:
public class Person {
private String id;
private String name;
private String gender;
private String country;
private String cities;
private String birthDate;
private String deathDate;
private List<String> aliases = new ArrayList<String>();
private List<String> tags = new ArrayList<String>();
public Person(String id, String name, String gender, String country, String cities, String birthDate,
String deathDate, List<String> aliases, List<String> tags) {
this.id = id;
this.name = name;
this.gender = gender;
this.country = country;
this.cities = cities;
this.birthDate = birthDate;
this.deathDate = deathDate;
this.aliases = aliases;
this.tags = tags;
}
这是我的扩展课程,小组课:
public class Group extends Person{
private String name;
private String country;
private String cities;
private String beginDate;
private String endDate;
private List<String> aliases = new ArrayList<String>();
private List<String> tags = new ArrayList<String>();
private List<Person> members = new ArrayList<Person>();
public Group(String id, String name, String gender, String country, String cities, String birthDate,
String deathDate, List<String> aliases, List<String> tags, String name2, String country2, String cities2,
String beginDate, String endDate, List<String> aliases2, List<String> tags2, List<Person> members) {
super(id, name, gender, country, cities, birthDate, deathDate, aliases, tags);
name = name2;
country = country2;
cities = cities2;
this.beginDate = beginDate;
this.endDate = endDate;
aliases = aliases2;
tags = tags2;
this.members = members;
}
这是生成的构造函数(巨大的一个) 当我试图在我的main上创建对象时,它需要所有字段(甚至个人的类字段) 那么,有没有办法只通过填充我的Group类的字段来创建Group对象呢?提前谢谢
# 1 楼答案
当你写
Group extends Person
时,这意味着一个组是一种人。但这是不对的。组包含人;它本身不是一个人。不要使用继承,使用成员身份。你已经有了List<Person> members
,所以真的要去掉extends
子句# 2 楼答案
我认为您应该能够创建一个较小的构造函数,并为
没有定义
像这样
请注意超类中的nullPointer异常