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 : IUSB 20 { 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 Computer 33 { 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的名字。