gpt4 book ai didi

oop - 接口(interface)引用变量

转载 作者:行者123 更新时间:2023-12-01 11:58:47 25 4
gpt4 key购买 nike

我正在复习一些 OO 基础知识,并试图理解为什么要使用接口(interface)引用变量。

当我创建一个接口(interface)时:

public interface IWorker
{
int HoneySum { get; }

void getHoney();
}

并让一个类实现它:

public class Worker : Bee, IWorker
{
int honeySum = 15;

public int HoneySum { get { return honeySum; } }

public void getHoney()
{
Console.WriteLine("Worker Bee: I have this much honey: {0}", HoneySum);
}
}

人们为什么使用:

IWorker worker = new Worker();
worker.getHoney();

不仅仅是使用:

Worker worker3 = new Worker();
worker3.getHoney();

当您可以实例化类并以这种方式使用它的方法和字段时,接口(interface)引用变量有什么意义?

最佳答案

如果您的代码知道将使用哪个类,那么您是对的,拥有接口(interface)类型变量没有意义。就像你的例子一样。该代码知道将被实例化的类是Worker因为该代码不会神奇地更改和实例化除之外的任何其他东西 worker 。从这个意义上说,您的代码耦合 Worker 的定义和使用。

但是您可能想编写一些在不知道类类型的情况下也能工作的代码。以下面的方法为例:

public void stopWorker(IWorker worker) {
worker.stop(); // Assuming IWorker has a stop() method
}

该方法不关心具体的类。它会处理任何实现 IWorker 的东西。

如果您想稍后使用不同的 IWorker 实现,则无需更改这些代码。

这都是关于您的代码段之间的低耦合。一切都与可维护性有关。

关于oop - 接口(interface)引用变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3598021/

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