我想问一个类是否可以从一个类或其他类继承。例如,我有一个名为“股东”的类。现在,股东可以是NaturalPerson或LegalPerson。Java类继承自一个或其他类
我有2个类(NaturalPerson和LegalPerson),但我能够选择其中的一个为了让特定的股东对象从其中一个继承?
谢谢
我想问一个类是否可以从一个类或其他类继承。例如,我有一个名为“股东”的类。现在,股东可以是NaturalPerson或LegalPerson。Java类继承自一个或其他类
我有2个类(NaturalPerson和LegalPerson),但我能够选择其中的一个为了让特定的股东对象从其中一个继承?
谢谢
Do 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(); }
}
这样,你可以注入任何类型的人,如果你以后获得更多的“人”类型上有股东类的代码没有任何影响。
如果我正确理解你,你在这里谈论多继承,这在java中是不允许的。但是,您可以让LegalPerson和NaturalPerson成为ShareHolder。你不能做的就是让ShareHolder同时将NaturalPerson 和扩展为LegalPerson。一个java类只能有一个超类。
如果我正确地假设NaturalPerson和LegalPerson都是ShareHolders,那么您需要以不同的方式实现这个层次结构。基类/接口需要是一个ShareHolder,它可以由NaturalPerson或LegalPerson扩展/实现。尝试像实时情景一样思考它。例如所有汽车都是汽车,但所有的汽车都不可能是汽车,它们可以是卡车,公共汽车等。以类似的方式,您的案例中的所有NaturalPerson都是ShareHolder,但所有ShareHolder不能是NaturalPerson,他们也可以是LegalPerson。
在这种情况下,继承可能不是世界的正确表示。看看[给我的答案](http://stackoverflow.com/a/28155750/4125191)双重继承问题。你能想出一种不同的方式来建立关系模型吗? – RealSkeptic