2015-06-11 101 views
0

我想问一个类是否可以从一个类或其他类继承。例如,我有一个名为“股东”的类。现在,股东可以是NaturalPerson或LegalPerson。Java类继承自一个或其他类

我有2个类(NaturalPerson和LegalPerson),但我能够选择其中的一个为了让特定的股东对象从其中一个继承?

谢谢

+0

在这种情况下,继承可能不是世界的正确表示。看看[给我的答案](http://stackoverflow.com/a/28155750/4125191)双重继承问题。你能想出一种不同的方式来建立关系模型吗? – RealSkeptic

回答

0

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(); } 
} 

这样,你可以注入任何类型的人,如果你以后获得更多的“人”类型上有股东类的代码没有任何影响。

0

如果我正确理解你,你在这里谈论多继承,这在java中是不允许的。但是,您可以让LegalPerson和NaturalPerson成为ShareHolder。你不能做的就是让ShareHolder同时将NaturalPerson 扩展为LegalPerson。一个java类只能有一个超类。

0

如果我正确地假设NaturalPerson和LegalPerson都是ShareHolders,那么您需要以不同的方式实现这个层次结构。基类/接口需要是一个ShareHolder,它可以由NaturalPerson或LegalPerson扩展/实现。尝试像实时情景一样思考它。例如所有汽车都是汽车,但所有的汽车都不可能是汽车,它们可以是卡车,公共汽车等。以类似的方式,您的案例中的所有NaturalPerson都是ShareHolder,但所有ShareHolder不能是NaturalPerson,他们也可以是LegalPerson。