1.简单了解什么是接口
接口是由几个没有主体代码的方法定义组成的集合体,有唯一的名称,可以被类或其他接口所实现(或者也可以说继承)。接口在定义时,通常会在命名前添加I以区别于其他类(例如:IWorker接口);它定义了所有类要继承接口是所以要遵守的一些规范。接口只包含了成员的声明。成员的定义是派生类的责任。接下来实现一个简单的接口:
1 class Program 2 { 3 static void Main(string[] args) 4 { 5 IWorker tom1 = new Tom1(); 6 IWorker tom2 = new Tom2(); 7 tom1.work("美工"); 8 tom2.work("页面"); 9 10 } 11 } 12 public interface IWorker { void work(string s); } 13 class Tom1 : IWorker 14 { 15 public void work(string w) 16 { 17 Console.WriteLine("我的名字是Tom1,我的工作是" + w); 18 } 19 } 20 class Tom2 : IWorker 21 { 22 public void work(string w) 23 { 24 Console.WriteLine("我的名字是Tom2,我的工作是" + w); 25 } 26 }
以上定义了一个简单的工作接口(IWorker),通过两个不同的工人类去继承接口并实现接口的方法;从中必须注意子类在继承接口时,必须实现接口中所有的方法。
2.简单了解什么是抽象类
不能初始化的类被叫做抽象类,它们只提供部分实现,但是另一个类可以继承它并且能创建它们的实例,有未被实现的方法。抽象类不能使用new关键字去实例化。抽象类通过abstract关键字进行标识。抽象类同样只能通过接口和作为其它类的基类使用。接下来写一个简单的抽象类:
{
public void Full()
{
Console.Write("请选择一种工作");
}
public abstract void work();
{
public override void work()
{
Console.WriteLine("编程");
}
}
从以上可以看到,抽象类在被其派生类继承时,必须继承其抽象方法并实现,而抽象类中的普通方法可以不继承。
3.接口与抽象类的区别
1.接口用于规范,抽象类用于共性。抽象类是类,所以只能被单继承,但是接口却可以一次实现多个。
2.接口中只能声明方法,属性,事件,索引器。而抽象类中可以有方法的实现,也可以定义非静态的类变量。
3.抽象类可以提供某些方法的部分实现,接口不可以。抽象类的实例是它的子类给出的。接口的实例是实现接口的类给出的。
4.在抽象类中加入一个方法,那么它的子类就同时有了这个方法。而在接口中加入新的方法,那么实现它的类就要重新编写(这就是为什么说接口是一个类的规范了)。
5.接口成员被定义为公共的,但抽象类的成员也可以是私有的、受保护的、内部的或受保护的内部成员(其中受保护的内部成员只能在应用程序的代码或派生类中访问)。
6.此外接口不能包含字段、构造函数、析构函数、静态成员或常量。
7.我们在VS中实现接口时会发现有2个选项,一个是实现接口,一个是显示实现接口。实现接口就是我们平常理解的实现接口,而显示实现接口的话,实现的方法是属于接口的,而不是属于实现类的。
参考文献
接口与抽象类区别参考之
参考地址:http://www.runoob.com/csharp/csharp-interface.html