有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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对象呢?提前谢谢


共 (2) 个答案

  1. # 1 楼答案

    public class Group extends Person {

    当你写Group extends Person时,这意味着一个组是一种人。但这是不对的。组包含人;它本身不是一个人。不要使用继承,使用成员身份。你已经有了List<Person> members,所以真的要去掉extends子句

  2. # 2 楼答案

    我认为您应该能够创建一个较小的构造函数,并为

    super (...)
    

    没有定义

    public Group(String id, String name, String gender) {
        super(id, name, gender, null, null, null, null, null, null);
    }
    

    像这样

    请注意超类中的nullPointer异常