抽象类(一)

在定义类的前面加上关键字abstract,那么这个类就是抽象类了,抽象类本身无法产生实例对象,而且抽象类包含了一个以上的抽象方法,这些方法只是提供函数名称,并没有定义如何具体实现,由继承的派生类实现,派生类同时必须实现所有抽象类的方法,否则其本身将成为另外一个抽象类。需要我们注意的一点是,当派生类重写抽象类的方法时,要使用override关键字来重写抽象类所定义的方法。
下面我们就来通过范例来理解抽象类的应用。

范例一
代码如下:

using System;

namespace ConsoleApplication1
{
  /// <summary>
  /// Class1 的摘要说明。
  /// </summary>
  class Class1
  {
    /// <summary>
    /// 应用程序的主入口点。
    /// </summary>
    [STAThread]
    static void Main(string[] args)
    {
      B b=new B();
      b.show0();
      b.show();
    }
  }

  abstract class A
  {
     public void show0()
     {
       Console.WriteLine("abstract class");
     }

     abstract public  void show();
  }

  class B :A
  {
    public override void show()
    {
      Console.WriteLine("the class B");
    }
  }
}

运行结果
abstract class
the class B
Press any key to continue

范例二
代码如下:


using System;

namespace ConsoleApplication1
{

  /// <summary>
  /// Class1 的摘要说明。
  /// </summary>

  class Class1
  {
    /// <summary>
   /// 应用程序的主入口点。
   /// </summary>
   [STAThread]
   static void Main(string[] args)
   {
     caculator c=new caculator(6,2);
     c.getresult(); 
    }
  }

  abstract class template
  {
    protected int a;
    protected int b;

  public template(int a,int b)
  {
    this.a=a;
    this.b=b;
  }
 
  public void getresult()
  {
    add(a,b);
    sub(a,b);
    mul(a,b);
    div(a,b);
  }
 
  abstract protected void add(int a,int b);
  abstract protected  void sub(int a,int b);
  abstract protected void mul(int a,int b);
  abstract protected void div(int a,int b);
}


class caculator :template
{
  public caculator(int a,int b):base(a,b){}

  protected override void add(int a,int b)
  {
    int r=a+b;
    Console.WriteLine("{0}+{1}={2}",a,b,r);
  }

  protected override void sub(int a, int b)
  {
     int r=a-b;
     Console.WriteLine("{0}-{1}={2}",a,b,r);
  }

  protected override void mul(int a, int b)
  {
     int r=a*b;
     Console.WriteLine("{0}*{1}={2}",a,b,r);
   }

   protected override void div(int a, int b)
   {
     if(b==0)
     {
       Console.WriteLine("input error");
     }
   else
   {
        int r;
        r=a/b;
        Console.WriteLine("{0}/{1}={2}",a,b,r);
      }
    }
  }
}

运行结果
6+2=8
6-2=4
6*2=12
6/2=3
Press any key to continue

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值