gpt4 book ai didi

java - Java中行为接口(interface)类型的引用变量

转载 作者:行者123 更新时间:2023-12-02 08:21:23 25 4
gpt4 key购买 nike

我正在阅读《Head First Design Patterns》并对 Java 有一些了解。它首先封装与类不同的东西并将它们放入单独的接口(interface)中,而不是将这些功能放入子类中。他们给出的例子是一个抽象的 Duck 类,它可以根据鸭子的不同而嘎嘎叫或飞翔。它们有一个 quack 和 Fly 的接口(interface)(QuackBehavior 和 FlyBehavior 接口(interface)),然后在其他类中实现这些接口(interface)。

在示例中,他们具有如下抽象鸭子类

public abstract class Duck {
QuackBehavior quackBehavior;
FlyBehavior flyBehavior;
.....
}

我想对我来说新鲜的是拥有一个接口(interface)类型的实例变量。我以前从未学过,但我假设它是有效的?我想我更熟悉具体类的实例变量。对于像这样的类/接口(interface)的实例变量有什么规则吗?谢谢。

最佳答案

这是有效的,并且是一种常见的做法。

实例变量是什么并不重要。甚至最好尽可能使用接口(interface)。例如,始终定义 List 类型的变量,而不是 ArrayList

否则你怎么能有不同的行为呢?现在,您可以将 LowFlyBehaviourHighFlyBehaviour 分配给该字段,因此 Duck 的不同实例可以具有不同的飞行行为。如果该字段是这些具体类型中的任何一种,则这是不可能的。

关于java - Java中行为接口(interface)类型的引用变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5399016/

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