首页 > 代码库 > 修罗场第二天:C#之面向对象基础(下)

修罗场第二天:C#之面向对象基础(下)

------------接(上)http://www.cnblogs.com/HoloSherry/p/7100795.html

  抽象类

    抽象类也可以实现多态,使用关键字abstract。那么什么时候用抽象类呢?

         当父类的方法不知道怎样去实现的时候,此时可以将父类写成抽象类,将方法写成抽象方法。

以下是抽象类的特点:

抽象成员必须标记为abstract,而且不能有方法体;
抽象成员必须在抽象类中;
抽象类中可以有抽象成员,也可以有非抽象成员,非抽象成员可以给子类使用;
抽象类不能被实例化,也就是不能创建对象。
子类继承抽象类后,必须把父类中所有的抽象成员都重写(override)。
抽象成员的访问修饰符默认是public,且不能被更改。
抽象类有构造函数,虽然不能被实例化,但是可以被子类所用。

      如果父类的抽象方法中有参数,那么,继承这个父类的子类在重写父类的方法时也必须传入对应的参数。如果抽象父类的抽象               方法中有返回值,那么子类在重写这个抽象方法时,也必须要传入返回值。

    举例子:   

 1 //动物叫的声音各有不同,这里我们用抽象类来实现
 2 //声明Animal父类,Cat和Dog子类
 3 public abstract class Animal
 4 {
 5     public abstract void Bark();
 6 }
 7 public class Dog:Animal
 8 {
 9     public override void Bark()
10     {
11         Console.WriteLine("狗汪汪叫");
12     }
13 }
14 public class Cat:Animal
15 {
16     public override void Bark()
17     {
18         Console.WriteLine("猫喵喵叫");
19     }
20 }
21 //在主函数中调用一下
22 static void Main(string[] args)
23 {
24     Animal cat=new Cat();
25     cat.Bark();
26     Console.ReadKey();
27 }
28 //最后结果:控制台中输出 猫喵喵叫

  接下来是实现多态的第三种方法:利用接口。

   接口的出现是为了解决一个类继承多个类的情况,继承的多个类实际上就是接口。

   接口有以下特点:      

   接口是一种规范,一种能力,接口的功能单一,一个类继承了一个接口,就必须实现这个接口中的所有成员,不能被实例化。

   接口不能继承一个类,但是可以继承接口,接口中不能有字段和构造函数。

举例子:

 

  

修罗场第二天:C#之面向对象基础(下)