gpt4 book ai didi

c# - 接口(interface) C# 的意义

转载 作者:可可西里 更新时间:2023-11-01 08:31:34 25 4
gpt4 key购买 nike

我想知道接口(interface)的重要用途。看了很多文章都没有搞清楚接口(interface)的概念。

我写了一个小程序。我已经定义了接口(interface) Itest.Class(Manager) 已经实现了 Interface.Another class(Employee) 还没有实现接口(interface)。但是在类(Employee) 的接口(interface)中定义了相同的方法(DoSomething())。我可以从类对象调用方法。那我为什么要去实现接口(interface)。我可以直接在一个类中实现该方法并调用该方法。为什么我应该采取额外的步骤在接口(interface)中实现方法,然后按类继承接口(interface)。我知道接口(interface)支持多重继承,但我在这个例子中没有使用多重继承。

感谢您的任何想法或意见。

public interface Itest
{
void DoSomething();
}

public class Manager:Itest
{
public void DoSomething()
{
Console.WriteLine("test....");
}

}
class Employee
{
public void DoSomething()
{
Console.WriteLine("test....");
}
}

class Program
{
static void Main(string[] args)
{
Manager m = new Manager();
m.DoSomething();
Employee e = new Employee();
e.DoSomething();
Console.ReadLine();
}
}

最佳答案

接口(interface)允许您使用多重继承。在您的示例中,它允许您将 Employee 或 Manager 的实例放入同一个变量中,然后对该变量调用 DoSomething,并将方法调用分派(dispatch)到当前引用的实例那个变量。例如:

public interface IEmployee {
void DoSomething();
}
// assume Manager and Employee both implement IEmployee

IEmployee ie = new Manager();
ie.DoSomething(); // calls Manager.DoSomething()
ie = new Employee();
ie.DoSomething(); // calls Employee.DoSomething()

如果你不使用接口(interface),你必须这样做:

object o;

// assign Manager or Employee (or something else!) to o

if (o is Manager)
((Manager)o).DoSomething();
else if (o is Employee)
((Employee)o).DoSomething();

一个接口(interface)定义了一个契约(Contract),只要实例实现了该接口(interface),您就不必关心它在运行时的实际情况。您可以让同一个类实现多个接口(interface),然后在这些接口(interface)的所有变量中使用该类的实例。您不能对抽象类使用相同的方法,因为一个类一次只能继承一个类。

我现在使用接口(interface)的一个例子是定义一个对象模型——我有各种属性的接口(interface)(IHasStorageIHasPrivilegesIHasCheezburger ),然后表示具体对象的类实现适合该类属性的任何接口(interface)和许多接口(interface)

关于c# - 接口(interface) C# 的意义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2220987/

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