国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > 綜合 > 正文

c#中的interface abstract與virtual

2024-07-21 02:17:51
字體:
來源:轉載
供稿:網友
 

interface用來聲明接口
1.只提供一些方法規約,不提供方法主體
  如
  public interface iperson
 {
  void getname();//不包含方法主體
  }
2.方法不能用public abstract等修飾,無字段變量,無構造函數。
3.方法可包含參數
  如 
  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
   }

實現interface的類
1.與繼承類的格式一致,如 public class chinese:iperson{}
2.必須實現interface中的各個方法

   例2,繼承例1
    public class chinese:iperson
  {
   public chinese(){}             //添加構造
   public void getname(){}        //實現getname()
   public void getage(string s){} //實現getage()
   }

abstract聲明抽象類、抽象方法
1.抽象方法所在類必須為抽象類
2.抽象類不能直接實例化,必須由其派生類實現。
3.抽象方法不包含方法主體,必須由派生類以override方式實現此方法,這點跟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()   //實現抽象方法,必須實現
      {
  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();      //將調用javabook中getprice()
    jbook.getname();       //將調用javabook中getname()
    jbook.getcontent();    //將調用book中getcontent()
    jbook.getdate();       //將調用book中getdate()
    
   }
   public static void main()
   {test t=new test();
   }
  }

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

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

菜鳥學堂:
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 香河县| 临城县| 耒阳市| 凤山市| 库尔勒市| 日土县| 阳东县| 阜城县| 尉犁县| 香格里拉县| 新闻| 民和| 伊宁市| 定日县| 平乐县| 新昌县| 北宁市| 灵武市| 浮梁县| 华安县| 宽甸| 内乡县| 巴青县| 河池市| 新闻| 赤水市| 华池县| 大余县| 郯城县| 修文县| 常宁市| 巨野县| 津市市| 南漳县| 长海县| 夹江县| 晋中市| 浮山县| 林口县| 霍山县| 阿城市|