首页 > 代码库 > 20141014C#面向对象抽象方法,抽象类,接口

20141014C#面向对象抽象方法,抽象类,接口

里氏代换原则。可以用子类的对象替代父类的对象。

抽象依赖原则。依赖——形参,关联

一、抽象方法:

在一些父类中,某些行为不是非常明确,因此无法用代码来具体实现,但是类必须具备此方法,因此把这样的方法定义为抽象方法。abstract

特点:1.只声明,不实现。2.加abstract关键字。

eg:

 1 public abstract class Ren //类中含有抽象方法,此类也必须是抽象类。 2 { 3   public abstract void Eat(); //以分号结束,没有花括号 4 } 5 class Chinese:Ren 6 {  7   public override void Eat() 8   { 9     Console.WriteLine("用筷子吃饭。");10   }11 }

 

二、抽象类:

无法被实例化的类。关键词是abstract 。凡是带有abstract关键词的类,都无法new 出来。

凡是带有抽象方法的类,肯定是抽象类;抽象类却不一定包含抽象方法。

构造方法、静态成员方法不能被声明为抽象方法。

一个非抽象类必须实现从父类继承来的所有抽象方法。

不能创建抽象类的实例。

三、接口 interface: 极度抽象的类。无成员变量,无实例方法,无实例属性,只有抽象方法或抽象属性。接口就是一个规则。

接口用interface关键词来定义。

接口中的方法都是抽象的,因此无需加abstract。

接口中的方法都是公有的,无需加访问修饰符。

生活中的例子:标准,协议

接口可以继承父接口

一个类可以实现(继承)多个接口

eg:

 1    public interface IUSB 2     { 3         void Start(); 4         void Stop(); 5     } 6     public class Camera : IUSB 7     { 8         public void Start() 9         {10             Console.WriteLine("打开摄像头了");11         }12 13         public void Stop()14         {15             Console.WriteLine("摄像头关闭了");16         }17     }18 19     public class UDisk : IUSB20     {21         public void Start()22         {23             Console.WriteLine("U盘启动了");24         }25 26         public void Stop()27         {28             Console.WriteLine("U盘退出了");29         }30     }31 32     public class Computer33     {34         public void CheckUSB(IUSB usb)35         {36             usb.Start();37         }38         public void CloseUSB(IUSB usb)39         {40             usb.Stop();41         }42     }

 

命名空间:相当于一个包。对类进行分类管理的工具。

一般的命名规则:公司名.项目名.模块名

项目名:用给人类,标识出这个项目是做什么的

程序集:程序编译出来的.exe或.dll文件。程序集的名字就是编译出来的EXE或dll的名字。

20141014C#面向对象抽象方法,抽象类,接口