Java:OOP,多个扩展

时间:2018-07-05 12:39:48

标签: java oop inheritance interface polymorphism

                  abstract class CAR
                       fuelUp () { // implemented }
                  /            \
interface SPORTER               interface TRUCK
    driveFast ();                    moveLoad ();

在Java中我有没有办法 拥有

的类ESTATE
  • CAR的实施加油
  • 并且还必须实现driveFast和moveLoad吗?

无法从多个类进行扩展,并且使CAR成为接口无法在CAR中实现。

2 个答案:

答案 0 :(得分:4)

您的Java类只能扩展1个父类,但是可以实现多个接口

您的班级定义如下:

class ESTATE extends CAR implements SPORTER, TRUCK {}

有关更多帮助,请参见: https://stackoverflow.com/a/21263662/4889267

答案 1 :(得分:0)

正如已经确定的,您可以扩展一个类并实现多个接口。并且在Java 8+中,这些接口可以具有默认实现。

但是要补充一点,例如,您还可以使用SPORTER的各种实现。您可以通过合成来利用SporterAlpha实现。

class Foo extends Car implements Sporter {
    private SporterAlpha sporterAlpha;

    public int sporterMethodA(int arg1) { return sporterAlpha.sporterMethodA(arg1); }
}

根据需要重复以公开所有必要的SporterAlpha方法。

因此,您可以:

  • 继承不超过一个超类
  • 实现尽可能多的接口
  • 在Java 8+接口上使用默认实现
  • 适当使用成分