【问题标题】:How to initialise a field in ABSTRACT CLASS by using constructor如何使用构造函数初始化抽象类中的字段
【发布时间】:2019-12-16 06:32:04
【问题描述】:

我有抽象类 Human 和许多子类(超过 10 个)。我只需要为字段“famName”设置值。它是字段“name”和“surname”的总和(“name”+“”+“surname”)。好像

抽象类

public abstract class Human{

private String name;

private String fam;

//Setters and Getters

/*
private String famName = this.getName() + this.getFam();

*/

public Human(fam,name){
this.fam = fam;
this.name = name;
this.famName = this.fam + " " + this.name;

}


}

实体类

public class Policeman extends Human{

//fields

}

所以,问题是“如何在抽象类中初始化这个字段 famName”,避免在子类的构造函数中使用它?谢谢

【问题讨论】:

  • 你觉得public Human(fam,name)有什么问题?
  • 如何初始化这个字段 famName - 创建一个 getter 方法
  • 我想,你的构造函数也有问题...应该是 public Human(String fam, String name)...

标签: java constructor get set abstract-class


【解决方案1】:

根据你的问题...看看这个。

你的抽象类:

public abstract class Human {
    private String name;
    private String fam;
    private String famName;


    public Human(String fam, String name) {
        this.fam = fam;
        this.name = name;
        this.famName = this.fam + " " + this.name;

    }

    public String getFamName() {
        return famName;
    }

}

实体类:

这里你在 Policeman Constructor 中调用超级构造器(来自 Human Class)。

public class Policeman extends Human {

    public Policeman(String fam, String name) {
        super(fam, name);
    }
}

可能的用途:

public static void main(String[] args) {

    Policeman policeman = new Policeman("Doe", "John");

    policeman.getFamName();

}

在这种情况下,您不需要对 Human Class 使用抽象。您可以使用超类和子类。子类继承然后 来自超类。

【讨论】:

    猜你喜欢
    • 2013-12-30
    • 2018-05-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-28
    • 2020-01-18
    • 1970-01-01
    相关资源
    最近更新 更多