您的位置:首页 > 编程语言 > C#

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

2013-09-28 09:51 288 查看
  一个完整的例子:

  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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: