我想问一个类是否可以从一个类或其他类继承。例如,我有一个名为“Shareholder”的类。现在,股东可以是NaturalPerson或LegalPerson。
我有2个类(NaturalPerson和LegalPerson),但是我能够选择其中一个以便特定的Shareholder对象从其中一个继承吗?
谢谢
答案 0 :(得分:0)
NaturalPerson和LegalPerson都是从Person类继承的吗?如果是这样,您可以考虑使用如下组合方法:
class Shareholder {
private Person person;
// Inject the type of shareholder person
// when constructing a Shareholder instance
public Shareholder(Person person) { this.person = person; }
// Other stuff specific to shareholders
public getName() { person.getName(); }
}
这样你可以注入任何类型的人,如果你以后获得更多“人”类型,那么对股东类的代码没有影响。
答案 1 :(得分:0)
如果我理解正确,你在这里谈论多重继承,这在java中是不允许的。但是你可以让LegalPerson以及NaturalPerson成为ShareHolder。你不能做的是让ShareHolder同时扩展NaturalPerson 和一个LegalPerson。 java中的一个类只能有一个超类。
答案 2 :(得分:0)
如果我认为NaturalPerson和LegalPerson都是ShareHolders是正确的,那么您需要以不同的方式实现此层次结构。基类/接口需要是ShareHolder,它还可以由NaturalPerson或LegalPerson扩展/实现。尝试将其视为实时场景。例如所有汽车都是汽车,但所有汽车都不能是汽车,它们可以是卡车,公共汽车等。在类似的情况下,所有的NaturalPerson都是ShareHolder,但所有ShareHolder都不能是NaturalPerson,它们也可以是LegalPerson。