不得不说,接口和抽象类好像啊~两者都不可以实例化,并且未实现的部分都是由派生类实现的。
他们主要有这么个区别:
(1)抽象类的派生类可以是派生类,换言之,抽象成员在派生类中不一定完全实现,而接口要求其派生类或者结构必须完全实现其成员。
(2)类只能继承一个抽象类,但是可以实现多个接口。
(3)类中可以包含字段什么的,但是接口中只包含未实现的成员,不包含字段。
(4)抽象类只能派生类,但是接口可以派生类和结构。
就我自己理解,派生类就是一组相似的类放在一起,把他们共同的成员抽出来放在基类里,以实现代码复用。有点像WinRT中的资源(Resource)或者网页中的CSS一类的。而接口就是功能的集合,我把一些类的功能暴露给你,你使用就好,不用关心他到底怎么实现的,放在一起,简洁好看。具体的,还得看。。。经验
Interface的示例上一篇写过了,这就写个抽象类的示例吧~
class Program { static void Main(string[] args) { Mengnan a = new Mengnan(); Console.WriteLine("Mengnan实例继承的msg字段是:{0}",a.msg); Console.WriteLine("Mengnan实例实现的方法是:",a.getname()); Console.WriteLine("Mengnan实例实现的属性是:", a.isMale); } } abstract class Person { internal string msg = "这是Person类"; abstract public string getname(); abstract public bool isMale { get; } } class Mengnan : Person { public override bool isMale { get { return true; } } public override string getname() { return "我是msp的梦楠姐姐"; } }