抽象類(一)

在定義類的前面加上關鍵字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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章