乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      c#中的interface abstract與virtual

       隱形的翅膀 2007-06-22

      interface用來聲明接口
      1.只提供一些方法規(guī)約,不提供方法主體
        如
        public interface IPerson
       {
        void getName();//不包含方法主體
        }
      2.方法不能用public abstract等修飾,無字段變量,無構(gòu)造函數(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(){}             //添加構(gòu)造
         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關(guān)鍵字
              {
            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中g(shù)etPrice()
          jbook.getName();       //將調(diào)用JavaBook中g(shù)etName()
          jbook.getContent();    //將調(diào)用Book中g(shù)etContent()
          jbook.getDate();       //將調(diào)用Book中g(shù)etDate()
         
         }
         public static void Main()
         {test t=new test();
         }
        }

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

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

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

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多