一、抽象类:声明方法的存在而不去实现它的类

      抽象类是特殊的类,只是不能被实例化;除此以外,具有类的其他特性;重要的是抽象类可以包括抽象方法,这是普通类所不能的。抽象方法只能声明于抽象类中,派生类必须覆盖它们。另外,抽象类可以派生自一个抽象类,可以覆盖基类的抽象方法也可以不覆盖,如果不覆盖,则其派生类必须覆盖它们。

注意:声明抽象方法时,不能使用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、接口可以被多重实现,抽象类只能被单一继承。

 

posted on 2012-08-10 19:20  午后の時間  阅读(973)  评论(1编辑  收藏  举报