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

15,-5

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值