This question already has answers here:
Java Multiple Inheritance
                                
                                    (16个答案)
                                
                        
                5年前关闭。
            
        

有没有一种方法可以在Java中实现多重分类?例如,以这个UML图-


GrainCrop类应如何实现?

最佳答案

接口。 CropFoodItem之一或两者都是GrainCrop要实现的接口。所以:


GrainCropCrop(并继承其行为),并显示FoodItem的行为。在这种情况下,Crop是基类(可能是抽象类),而FoodItem是接口。
GrainCropFoodItem(并继承其行为),并显示Crop的行为。在这种情况下,FoodItem是基类(可能是抽象类),而Crop是接口。
GrainCrop同时显示FoodItemCrop的行为。在这种情况下,FoodItemCrop都是接口。


在单继承环境中,您要特别注意识别“什么”是什么以及它表现出的行为。 (这是为什么接口通常由其行为(例如Eatable)而不是其结构(例如FoodItem)描述的原因之一。这使得建模更加清晰。)

作为一种经常方便的过度简化,可以将基类视为“什么是”,将接口视为“什么”。一个对象只能是一件事,但是它可以做很多事情。

09-25 20:43