我想知道Interface的重要用途.我已经阅读了很多文章,但没有清楚界面的概念.
我写了一个小程序.我已经定义了Interface Itest.Class(Manager)实现了Interface.Another类(Employee)还没有实现接口.但是在类(Employee)的接口中定义了相同的方法(DoSomething()).我可以从类对象调用方法.那我为什么要去实现界面呢?我可以直接在类中实现该方法并调用该方法.为什么要在接口中执行方法,然后按类继承接口.我知道接口支持多重继承,但是在这个例子中我并没有使用多重继承.
感谢任何想法或投入.
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(); } }
解决方法
接口允许您使用多重继承进行排序.在你的例子中,它允许你把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()
如果您没有使用接口,则必须执行以下操作:
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();
接口定义了一个契约,只要一个实例实现了该接口,就不用担心它在运行时实际上是什么.您可以使用相同的类实现多个接口,然后在这些接口的所有变量中使用该类的实例.抽象类不能使用相同的类,因为类只能一次继承一个类.
现在我使用接口的一个例子是定义一个对象模型 – 我有各种属性的接口(IHasStorage,IHasPrivileges,IHasCheezburger),然后表示具体对象的类实现了哪个接口适合该类’属性