小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

c#中的interface abstract與virtual

 隱形的翅膀 2007-06-22

interface用來聲明接口
1.只提供一些方法規(guī)約,不提供方法主體
  如
  public interface IPerson
 {
  void getName();//不包含方法主體
  }
2.方法不能用public abstract等修飾,無字段變量,無構造函數(shù)。
3.方法可包含參數(shù)
  如 
  public interface IPerson
  {
   void getAge(string s);
  }

  一個例子(例1):
  public interface IPerson
  {
   IPerson();              //錯誤
   string name;            //錯誤
   public void getIDcard();//錯誤

   void getName();         //right
   void getAge(string s);  //right
   }

實現(xiàn)interface的類
1.與繼承類的格式一致,如 public class Chinese:IPerson{}
2.必須實現(xiàn)interface中的各個方法

   例2,繼承例1
    public class Chinese:IPerson
  {
   public Chinese(){}             //添加構造
   public void getName(){}        //實現(xiàn)getName()
   public void getAge(string s){} //實現(xiàn)getAge()
   }

abstract聲明抽象類、抽象方法
1.抽象方法所在類必須為抽象類
2.抽象類不能直接實例化,必須由其派生類實現(xiàn)。
3.抽象方法不包含方法主體,必須由派生類以override方式實現(xiàn)此方法,這點跟interface中的方法類似

  如
  public abstract class Book
 {
  public Book()
  {  
     }

 public abstract void getPrice();      //抽象方法,不含主體
        public virtual void getName()   //虛方法,可覆蓋
        {
      Console.WriteLine("this is a test:virtual getName()");
             }
        public virtual void getContent()   //虛方法,可覆蓋
        {
      Console.WriteLine("this is a test:virtual getContent()");
             }
 public void getDate()                           //一般方法,若在派生類中重寫,須使用new關鍵字
        {
      Console.WriteLine("this is a test: void getDate()");
             }
  }

  public class JavaBook:Book
  {
      public override void getPrice()   //實現(xiàn)抽象方法,必須實現(xiàn)
      {
  Console.WriteLine("this is a test:JavaBook override abstract getPrice()");
  }
      public override void getName()   //覆蓋原方法,不是必須的
      {
  Console.WriteLine("this is a test:JavaBook override virtual getName()");
  }
  }

 測試如下:
 public class test
  {
   public test()
   {
    JavaBook jbook=new JavaBook();
    jbook.getPrice();      //將調(diào)用JavaBook中getPrice()
    jbook.getName();       //將調(diào)用JavaBook中getName()
    jbook.getContent();    //將調(diào)用Book中getContent()
    jbook.getDate();       //將調(diào)用Book中getDate()
   
   }
   public static void Main()
   {test t=new test();
   }
  }

virtual標記方法為虛方法
1.可在派生類中以override覆蓋此方法
2.不覆蓋也可由對象調(diào)用
3.無此標記的方法(也無其他標記),重寫時需用new隱藏原方法

abstract與virtual: 方法重寫時都使用 override 關鍵字
interface中的方法和abstract方法都要求實現(xiàn)

    本站是提供個人知識管理的網(wǎng)絡存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權內(nèi)容,請點擊一鍵舉報。
    轉藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多