我想知道Interface的重要用途.我读过很多文章,但没有明确界面的概念.
我写了一个小程序.我已经定义了Interface Itest.Class(Manager)已经实现了Interface.Another class(Employee)没有实现的接口.但是DoSomething()在class(Employee)的接口中定义了相同的method ().我可以从类对象中调用该方法.那我为什么要去实现接口呢?我可以直接在类中实现该方法并调用该方法.为什么我要在接口中执行额外的步骤,然后按类继承接口.我知道接口支持多继承,但我在这个例子中没有使用多重继承.
感谢您的任何想法或意见.
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();
}
}
Run Code Online (Sandbox Code Playgroud)
the*_*oop 16
接口允许您使用多重继承进行排序.在您的示例中,它允许您将Employee或Manager的实例放入同一个变量中,然后调用DoSomething该变量,并将方法调用分派给该变量当前引用的实例.例如:
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()
Run Code Online (Sandbox Code Playgroud)
如果您没有使用接口,则必须执行以下操作:
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();
Run Code Online (Sandbox Code Playgroud)
接口定义了一个契约,只要一个实例实现了该接口,您就不关心它在运行时的实际情况.您可以让同一个类实现多个接口,然后在这些接口的所有变量中使用该类的实例.您不能对抽象类使用相同的内容,因为类一次只能继承一个类.
这里我使用的接口,现在一个例子是定义一个对象模型-我已经得到了各种属性(接口IHasStorage,IHasPrivileges,IHasCheezburger),则表示具体的对象实现并取其然而,许多接口,适用于该类的属性的类
Ode*_*ded 10
接口用于抽象(抽象类也用于此,但通常包含一些旨在重用的实现).
在C#中,它们允许使用多重继承,这意味着您可以在一个类中实现许多不同的接口.
如果您有许多不同的接口实现,只要使用接口声明,就可以互相替换它们.
例如:
IAnimal可以通过Cat和实施Dog.在其他代码中,您希望调用Talk在接口中声明的方法.您的代码不必关心它是Cat对象还是Dog对象.您可以添加Duck或Human不更改该段代码.
这在使用模拟对象测试代码时也很有用,因此可以用一个简单的对象替换真实的对象以进行测试.
一些接口用作标记,因此反射可以轻松地拾取它们(例如,ISerializable接口,将类标记为可序列化).
| 归档时间: |
|
| 查看次数: |
2168 次 |
| 最近记录: |