国产探花免费观看_亚洲丰满少妇自慰呻吟_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方法都要求實現

菜鳥學堂:
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 梅州市| 综艺| 南涧| 察隅县| 嘉峪关市| 多伦县| 安庆市| 洞口县| 文水县| 察雅县| 容城县| 台东市| 柳江县| 日喀则市| 苏州市| 资溪县| 察隅县| 贵州省| 遵化市| 横峰县| 乃东县| 天镇县| 沅江市| 克什克腾旗| 新化县| 黄梅县| 珠海市| 连江县| 湛江市| 明光市| 赤水市| 迭部县| 河西区| 红河县| 舟曲县| 聂荣县| 鸡西市| 莱芜市| 徐水县| 乌鲁木齐县| 阿城市|