一、抽象类:声明方法的存在而不去实现它的类
抽象类是特殊的类,只是不能被实例化;除此以外,具有类的其他特性;重要的是抽象类可以包括抽象方法,这是普通类所不能的。抽象方法只能声明于抽象类中,派生类必须覆盖它们。另外,抽象类可以派生自一个抽象类,可以覆盖基类的抽象方法也可以不覆盖,如果不覆盖,则其派生类必须覆盖它们。
注意:声明抽象方法时,不能使用virtual static 和private修饰符。
抽象类的定义
[访问修饰符] abstract class 类名
{
}
实例:
View Code
1 using System; 2 public class Abstract 3 { 4 public static void Main() 5 { 6 God g = new YeSu(); 7 g.Player(); 8 } 9 } 10 //抽象类 11 public abstract class God 12 { 13 public abstract void Player(); 14 } 15 //继承了抽象类 16 public class YeSu:God 17 { 18 public override void Player() 19 { 20 Console.WriteLine("牵手"); 21 } 22 }
二、sealed关键字
sealed修饰的类和方法不能被继承、重写,此类不能当父类。
三、接口:特殊类
public interface 接口名
{
//只能写方法的定义和属性的定义。
}
注意:
1、接口中的方法定义不能有public
2、子类实现接口也不能使用override 关键字。
3、一个类同时实现继承类和接口,父类在前,接口在后。
4、接口也不能被实例化。
4、接口除了可以包含方法之外,还可以包含属性、索引器、事件,而且这些成员都被定义为公有的。除此之外,不能包含任何其他的成员,例如:常量、域、构造函数、析构函数、静态成员。一个类可以直接继承多个接口,但只能直接继承一个类(包括抽象类)。
接口的实例:
View Code
1 using System; 2 public class StudyInterface 3 { 4 public static void Main() 5 { 6 IUSB u = new IUSB(); 7 KnowUSB(u); 8 9 10 } 11 public static void KnowUSB(IUSB usb) 12 { 13 usb.know(); 14 } 15 } 16 //接口类 17 public interface IUSB 18 { 19 //方法的定义 20 void know(); 21 } 22 public class UStorge:IUSB 23 { 24 public void know() 25 { 26 Console.WriteLine("识别U盘"); 27 } 28 }
四、抽象类与接口的区别
1、抽象类中的成员可以是私有的(只要他们不是抽象的),受保护的,内部的或者受保护的内部成员,但是接口中的成员必须是公共的。
2、抽象类可以定义字段、属性、方法实现。接口只能定义属性、索引器、事件、和方法声明,不能包含字段。
3、接口可以被多重实现,抽象类只能被单一继承。