gpt4 book ai didi

java - Java 接口(interface)如何模拟多重继承?

转载 作者:IT老高 更新时间:2023-10-28 11:49:56 26 4
gpt4 key购买 nike

我正在阅读“Java 教程”(第二次)。我刚刚完成了关于接口(interface)的部分(再次),但仍然不明白 Java 接口(interface)如何模拟多重继承。有比书上更清楚的解释吗?

最佳答案

假设您的域中有两种东西:卡车和厨房

卡车有一个 driveTo() 方法,而厨房有一个 cook() 方法。

现在假设 Pauli 决定在送货卡车的后部销售比萨饼。他想要一个可以 driveTo() 和 cook() 的东西。

在 C++ 中,他会使用多重继承来做到这一点。

在被认为太危险的 Java 中,您可以从主类继承,但您可以从接口(interface)“继承”行为,这些接口(interface)用于所有意图和目的的抽象类,没有字段或方法实现。

所以在 Java 中我们倾向于使用委托(delegate)来实现多重继承:

Pauli 子类化一辆卡车,并在名为 kitchen 的成员变量中为卡车添加一个厨房。他通过调用 kitchen.cook() 来实现 Kitchen 接口(interface)。

class PizzaTruck extends Truck implements Kitchen {
Kitchen kitchen;

public void cook(Food foodItem) {
kitchen.cook(foodItem);
}
}

他是一个快乐的人,因为他现在可以做类似的事情;

pizzaTruck.driveTo(beach);
pizzaTruck.cook(pizzaWithExtraAnchovies);

好吧,这个愚蠢的故事是为了说明它不是多重继承的模拟,它是真正的多重继承,条件是你只能继承契约,只能从称为接口(interface)的空抽象基类继承。

(更新:随着default methods interfaces的到来,现在也可以提供一些行为被继承了)

关于java - Java 接口(interface)如何模拟多重继承?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3556652/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com