亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C# > 正文

c#中的interface abstract與virtual介紹

2020-01-24 03:11:54
字體:
來源:轉載
供稿:網友

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方式實現此方法,這點跟abstract中的方法類似

  如

復制代碼 代碼如下:

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方法都要求實現

發現很多朋友對于C#中的Abstract和Virtual函數區分得不是很清楚,下面我通過兩段代碼讓大家看看這兩者之間到底有什么區別~~
開發環境: VS.net 2005
使用方法: 用以下代碼覆蓋program.cs中的代碼,然后run即可
第一段代碼: Abstract的用法

復制代碼 代碼如下:

using System;
using System.Collections.Generic;
using System.Text;
namespace ConsoleApplication3
{
    public abstract class Book
    {
        //抽象方法,不含主體,抽象方法所在類必須為抽象類,派生類必須實現該方法
        public abstract void Introduce();
    }
    public interface iBook
    {
    }
    public class JavaBook : Book
    {
        //實現抽象方法,必須實現,必須添加override關鍵字
        public override void Introduce()
        {
            Console.WriteLine("I'm Java");
        }
//            // Compile Error
//            public void Introduce()
//            {
//                Console.WriteLine("I'm Java");
//            }
    }

    public class test
    {
        public test()
        {
            JavaBook javaBook = new JavaBook();
            javaBook.Introduce();      //將調用JavaBook中Introduce()
            Book book = new JavaBook();
            book.Introduce();      //將調用JavaBook中Introduce()
        }
        public static void Main()
        {
            test t = new test();
        }
    }
}


第二段代碼: Virtual的用法以及override的用法
復制代碼 代碼如下:

using System;
using System.Collections.Generic;
using System.Text;
namespace ConsoleApplication2
{
    public abstract class Book
    {
        public virtual void Introduce()
        {
            Console.WriteLine("I'm book");
        }
        public virtual void SayHi()
        {
            Console.WriteLine("Hi, I'm book");
        }
    }

    public class JavaBook : Book
    {
        public override void Introduce()
        {
            Console.WriteLine("I'm Java");
        }
        //注意,此方法沒有override父類的方法
        public void SayHi()
        {
            Console.WriteLine("Hi, I'm Java");
        }
    }

    public class test
    {
        public test()
        {
            JavaBook javaBook = new JavaBook();
            Book book = new JavaBook();
            javaBook.Introduce();       //將調用JavaBook中Introduce()
            book.Introduce();       //將調用JavaBook中Introduce()
            javaBook.SayHi();      //將調用JavaBook中SayHi()
            book.SayHi();           //將調用Book中SayHi()
        }
        public static void Main()
        {
            test t = new test();
        }
    }
}


第三段代碼: new的用法
復制代碼 代碼如下:

using System;
using System.Collections.Generic;
using System.Text;
namespace ConsoleApplication4
{
    public abstract class Book
    {
        public void Introduce()
        {
            Console.WriteLine("I'm book");
        }
        public void SayHi()
        {
            Console.WriteLine("Hi, I'm book");
        }
    }

    public class JavaBook : Book
    {
        // 沒有加new,但C#默認行為會加上new
        public void Introduce()
        {
            Console.WriteLine("I'm Java");
        }
        // 顯式加上new,跟不加new實際效果一樣,只是加new之后會消除compile warning
        public new void SayHi()
        {
            Console.WriteLine("Hi, I'm Java");
        }
    }

    public class test
    {
        public test()
        {
            JavaBook javaBook = new JavaBook();
            Book book = new JavaBook();
            javaBook.Introduce();       //將調用JavaBook中Introduce()
            javaBook.SayHi();           //將調用JavaBook中SayHi()

            book.Introduce();       //將調用Book中Introduce()
            book.SayHi();           //將調用Book中SayHi()
        }
        public static void Main()
        {
            test t = new test();
        }
    }
}

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
成人乱人伦精品视频在线观看| 国产亚洲人成a一在线v站| www欧美xxxx| 久久天天躁夜夜躁狠狠躁2022| 精品国产乱码久久久久酒店| 亚洲欧美激情在线视频| 国产精品久久电影观看| 2019中文字幕全在线观看| 日韩欧美极品在线观看| 另类图片亚洲另类| 国产精品福利久久久| 欧美老少配视频| 久久6精品影院| 亚洲欧美日韩久久久久久| 亚洲成人黄色在线观看| 九九九热精品免费视频观看网站| 欧美大片在线看免费观看| 555www成人网| 亚洲激情在线观看视频免费| 久久精品小视频| 日韩成人在线免费观看| 亚洲欧美国产va在线影院| 自拍偷拍亚洲精品| 国产精品成人久久久久| 成人春色激情网| 国产成人精品久久二区二区91| 国产精品第100页| 欧美华人在线视频| 92国产精品视频| 国产福利视频一区二区| 亚洲三级av在线| 懂色av中文一区二区三区天美| 国产精品美女视频网站| 中文字幕日本欧美| 亚洲伊人久久大香线蕉av| 日韩在线欧美在线国产在线| 欧美成人剧情片在线观看| 中文字幕久精品免费视频| 亚洲天堂男人天堂| 成人亲热视频网站| 成人日韩av在线| 精品国产一区二区三区四区在线观看| 一本色道久久88精品综合| 国产成人精品av在线| 欧美天堂在线观看| 亚洲国产精品国自产拍av秋霞| 8090成年在线看片午夜| 日本久久久久久久久久久| 久久精品视频网站| 欧美精品久久久久久久| 91精品国产综合久久久久久久久| 国产精品老女人视频| 亚洲精品一二区| 国产一区二区在线免费视频| 亚洲最大福利网站| 992tv成人免费视频| 久久国产加勒比精品无码| 国模吧一区二区| 国产成人福利夜色影视| 久久久欧美精品| 国产精品自拍偷拍视频| 国产美女高潮久久白浆| 亚洲欧美成人在线| 国产在线日韩在线| 国产成人激情视频| 色噜噜久久综合伊人一本| 热门国产精品亚洲第一区在线| 91香蕉国产在线观看| 亚洲国产免费av| 亚洲精品中文字幕有码专区| 精品国产欧美一区二区五十路| 亚洲最大福利视频网站| 色偷偷9999www| 欧美一区二区三区免费视| 亚洲国产精品成人va在线观看| 亚洲一区二区免费在线| 国产香蕉一区二区三区在线视频| 亚洲网址你懂得| 成人一区二区电影| 欧美一区二粉嫩精品国产一线天| 国产精品一二三在线| 亚洲免费av片| 欧美成aaa人片在线观看蜜臀| 狠狠爱在线视频一区| 欧美激情综合色| 欧美激情精品久久久久久免费印度| 奇门遁甲1982国语版免费观看高清| 国产亚洲精品综合一区91| 久久av红桃一区二区小说| 久久不射电影网| 日韩av影视综合网| 97久久久免费福利网址| 亚洲综合中文字幕68页| 国产精品自拍偷拍视频| 国产91精品青草社区| 国产亚洲欧美日韩一区二区| 色婷婷久久一区二区| 成人精品在线视频| 黄色一区二区三区| 亚洲电影中文字幕| 欧美激情亚洲自拍| 日韩中文在线中文网在线观看| 亚洲专区在线视频| 久久久久久久久久久91| 伊人精品在线观看| 国产九九精品视频| 91香蕉嫩草神马影院在线观看| 精品久久久久久中文字幕| 亚洲免费高清视频| 日韩av在线影视| 98精品国产高清在线xxxx天堂| 日韩大片在线观看视频| 中文国产亚洲喷潮| 国产精品入口免费视频一| 国产精品免费视频久久久| 日韩av有码在线| 国产日韩视频在线观看| 欧美人与性动交| 国产精品精品久久久| 亚洲天堂av高清| 欧美精品在线免费播放| 欧美性猛交xxxx富婆弯腰| 亚洲最大的av网站| 亚洲久久久久久久久久久| 91青草视频久久| 国产精品入口尤物| 亚洲石原莉奈一区二区在线观看| 欧美激情国产日韩精品一区18| 免费91麻豆精品国产自产在线观看| 亚洲电影在线观看| 欧美极品少妇xxxxx| 国产成人精品日本亚洲专区61| 欧美电影在线观看| 中文字幕少妇一区二区三区| 欧美性色视频在线| 中文字幕精品www乱入免费视频| 精品视频久久久久久| 欧美日韩高清在线观看| 国产手机视频精品| 亚洲精品国产精品乱码不99按摩| 日韩精品丝袜在线| 日韩美女福利视频| 45www国产精品网站| 91久久久亚洲精品| 欧美性高跟鞋xxxxhd| 欧美激情在线视频二区| 91av在线国产| 日韩久久精品电影| 国产精品视频地址| 国产日韩欧美电影在线观看| 欧美成人第一页| 国内揄拍国内精品少妇国语| 色综合久久中文字幕综合网小说| 欧美视频专区一二在线观看| 伊人久久久久久久久久久久久| 激情久久av一区av二区av三区| 一区二区三区 在线观看视| 懂色av影视一区二区三区| 精品欧美aⅴ在线网站| 亚洲精品一区二区三区婷婷月| 欧美国产第二页| 国产精品中文久久久久久久| 欧美视频中文在线看| 亚洲人成网站777色婷婷|