【C#中抽象类和接口的使用例子】

    一个完整的例子:

  using System;

  using System.Collections.Generic;

  using System.Text;

  namespace ConsoleApplication1

  {

  ///<summary>

  /// 接口的例子,接口是顶层设计//////////////////////////

  ///</summary>

  interface IAnimal  //顶层接口

  {

  void eating();

  //接口中声明的方法,这里不可以用static,abstract修饰

  }

  abstract class Bird :IAnimal   //抽象类Bird继承了IAnimal接口

  {

  public void eating() { Console.WriteLine("会吃!"); } //抽象类实现了接口的方法,且必须实现该方法

  abstract public void flying();                                           //抽象类自己又定义了一个抽象方法

  }

  class Chick : Bird     //Chick类是抽象类Bird的派生类

  {

  public int chibangnumber;

  public Chick()

  {

  Console.WriteLine("这是一个小鸡!");

  chibangnumber = 2;

  }

  //实现了抽象类的flying方法,用override

  public override void flying()

  {  Console.WriteLine("会飞行!");  }

  };

  ///<summary>

  /// 多层次抽象类的例子,包含三层关系,抽象类A,抽象类B继承抽象类A,类C继承抽象类B

  /// 例子中的抽象类既包含抽象方法,也包含普通成员,还有构造函数

  ///</summary>

  abstract class A   //抽象类A的声明

  {

  public int x; //普通公有成员

  public A(int m) { x = m; }  //抽象类A的构造函数

  abstract public int fun1(); //抽象方法fun1()声明

  }

  abstract class B : A //类B仍是抽象类

  {

  public B(int m):base(1) { x = m; }  //抽象类A的构造函数

  abstract public int fun2(); //增加了一个抽象方法fun2()

  public abstract int px { get;set; } //定义抽象属性px,可读可写

  public abstract int py { get; }     //定义抽象属性py,只读

  }

  class C: B  //类C,继承于抽象类B,必须实现所有的抽象方法

  {

  int y, z;

  public C(int x1, int y1):base(x1) //构造函数

  { y = x1; z = y1; }

  public override int fun1() //抽象方法fun1实现

  {  return x * y;  }

  public override int fun2() //抽象方法fun2实现

  {  return x / y;  }

  public override int px  //抽象属性px的实现

  {

  get

  {

  try   { return x+10; }

  catch {throw new Exception("The method or operation is not implemented."); }

  }

  set

  {   try   { x = value; }

  catch { throw new Exception("The method or operation is not implemented."); }

  }

  }

  public override int py  //抽象属性py的实现

  {

  get

  {   try  { return y-10; }

  catch{ throw new Exception("The method or operation is not implemented."); }

  }

  }

  }

    class Program  //主程序

  {

  static void Main(string[] args)

  {

  //类的使用

  Chick ch = new Chick();

  ch.eating();

  ch.flying();

  Console.WriteLine("翅膀个数是:{0}", ch.chibangnumber);

  //多层次抽象类举例

  C c = new C(5,2); //创建类c的对象C

  Console.WriteLine("{0},{1}", c.fun1(),c.fun2());

  Console.WriteLine("{0}", c.x);

  Console.WriteLine("{0},{1}", c.px,c.py); //调用抽象属性

  }

  }

  }

  运行结果:

  这是一个小鸡!

  会吃!

  会飞行!

  翅膀个数是2

  25,1

  5

 

posted @ 2013-09-28 09:51  来自你520的末班车  阅读(351)  评论(0编辑  收藏  举报