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

首頁 > 編程 > .NET > 正文

asp.net中virtual和abstract的區別分析

2024-07-10 13:28:18
字體:
來源:轉載
供稿:網友
這篇文章主要介紹了asp.net中virtual和abstract的區別,較為詳細的分析了virtual與abstract的概念與具體用法,并以實例的形式予以總結歸納,需要的朋友可以參考下
 
 

本文實例分析了asp.net中virtual和abstract的區別,分享給大家供大家參考。具體分析如下:

一、Virtual方法(虛方法)

virtual 關鍵字用于在基類中修飾方法。virtual的使用會有兩種情況:
情況1:在基類中定義了virtual方法,但在派生類中沒有重寫該虛方法。那么在對派生類實例的調用中,該虛方法使用的是基類定義的方法。
情況2:在基類中定義了virtual方法,然后在派生類中使用override重寫該方法。那么在對派生類實例的調用中,該虛方法使用的是派生重寫的方法。
當一個方法被聲明為Virtual時,它是一個虛擬方法,直到你使用ClassName variable = new ClassName();聲明一個類的實例之前,它都不存在于真實的內存空間中。這個關鍵字在類的繼承中非常常用,用來提供類方法的多態性支持。

二、Abstract方法(抽象方法)

abstract關鍵字只能用在抽象類中修飾方法,并且沒有具體的實現。抽象方法的實現必須在派生類中使用override關鍵字來實現。  
抽象方法聲明使用,是必須被派生類覆寫的方法,抽象類就是用來被繼承的;可以看成是沒有實現體的虛方法;如果類中包含抽象方法,那么類就必須定義為抽象類,不論是否還包含其他一般方法;抽象類不能有實體的。
 
三、多態
 
C#中多態的實現分為了兩種,一種是編譯時多態,一種是運行時多態
|- 編譯時多態 通過一個類中多個方法的重載來實現的多態,系統在編譯的時候,根據傳遞的參數確定具體調用哪個重載的方法;
|- 運行時多態 通過virtual函數(虛函數)、抽象方法實現的多態,派生類去override虛函數或抽象方法,從而實現運行時多態.
 
四、abstract的用法

 

復制代碼代碼如下:
using System;
using System.Collections.Generic;
using System.Text;
namespace ConsoleApplication3
{
    public abstract class Book
    {
        //抽象方法,不含主體,抽象方法所在類必須為抽象類,派生類必須實現該方法
        public abstract void Introduce();
    }
    public class JavaBook : Book
    {
        //實現抽象方法,必須實現,注意!必須添加override關鍵字
        public override 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();
        }
    }
}


 
六、virtual和abstract的區別慨括
 
(1)、virtual修飾的方法必須有實現(哪怕是僅僅添加一對大括號),而abstract修飾的方法一定不能實現。如對于virtual修飾的方法如果沒有實現:
(2)、virtual可以被子類重寫,而abstract必須被子類重寫,如果重寫了virtual修飾的方法,前面必須添加override(這樣就告訴了編譯器你要重寫虛擬方法),而且必須有實現,否則編譯出錯;
(3)、如果類成員被abstract修飾,則該類前必須添加abstract,因為只有抽象類才可以有抽象方法。
(4)、無法創建abstract類的實例,只能被繼承無法實例化,比如: BaseTest2 base2 = new BaseTest2();將出現編譯錯誤:抽象類或接口不能創建實例。

 

(5)、C#中如果要在子類中重寫方法,必須在父類方法前加virtual,在子類方法前添加override,這樣就避免了程序員在子類中不小心重寫了父類方法。

(6)、abstract方法必須重寫,virtual方法必須有實現(即便它是在abstract類中定義的方法).

希望本文所述對大家的asp.net程序設計有所幫助。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
主播福利视频一区| 欧美影院在线播放| 丝袜美腿精品国产二区| 亚洲第一精品电影| 亚洲天堂色网站| 81精品国产乱码久久久久久| 中日韩美女免费视频网站在线观看| 在线观看国产精品日韩av| 亚洲欧美激情另类校园| 日韩精品日韩在线观看| 日韩色av导航| 亚洲精品视频中文字幕| 国产精品偷伦一区二区| 日韩av影院在线观看| 国产精品久久久久久久av电影| 国产成人在线亚洲欧美| 欧美成人激情视频| 久久久亚洲国产天美传媒修理工| 国产精品视频免费在线观看| 国产玖玖精品视频| 日韩av色综合| 国产精品嫩草影院久久久| 国产精品视频1区| 午夜精品在线视频| 国产精品美女主播在线观看纯欲| 精品国产91乱高清在线观看| 国产亚洲一区二区在线| 国产ts一区二区| 亚洲天堂精品在线| 97在线视频免费播放| 成人免费网站在线观看| 亚洲精品之草原avav久久| 久久久久久久久久久久av| 亚洲欧美日韩精品久久亚洲区| 色七七影院综合| 成人欧美一区二区三区黑人孕妇| 日韩av在线天堂网| 国产精品人成电影| 日韩在线高清视频| 久久久999精品| 精品久久久国产精品999| 激情成人中文字幕| 欧美中文在线视频| 成人福利网站在线观看| 成人黄色生活片| 亚洲精品99久久久久中文字幕| 国产精品国产亚洲伊人久久| 日韩精品久久久久| 欧洲亚洲妇女av| 午夜精品久久久久久99热软件| 国产亚洲精品91在线| 日韩在线免费观看视频| 国产在线观看91精品一区| 成人亚洲欧美一区二区三区| 亚洲欧美中文日韩v在线观看| 久久视频免费在线播放| 国产精品欧美久久久| 国产91色在线播放| 亚洲一区二区久久久| 国产性色av一区二区| 国产精品扒开腿做爽爽爽视频| 久久亚洲精品国产亚洲老地址| 欧美交受高潮1| 亚洲伊人一本大道中文字幕| 日韩欧美999| 国产91精品久久久久久| 欧美有码在线观看视频| 久久久精品美女| 久久午夜a级毛片| 高清视频欧美一级| 91黑丝在线观看| 日韩第一页在线| 91精品国产91久久久久| 欧美激情极品视频| 亚洲最新av在线网站| 最近2019年好看中文字幕视频| 国产成人短视频| 欧美疯狂做受xxxx高潮| 欧美国产日韩一区二区| 中文字幕亚洲情99在线| 国产最新精品视频| 久久免费视频在线| 日韩va亚洲va欧洲va国产| 欧美成人精品h版在线观看| 欧美另类老肥妇| 大伊人狠狠躁夜夜躁av一区| 日本精品久久久久久久| 久久久av免费| 国产精品第七影院| 91av福利视频| 成人有码在线播放| 欧美日本高清一区| 一区二区三区精品99久久| 8090理伦午夜在线电影| 成人国产在线激情| 欧美视频在线免费| 精品视频久久久久久| 在线免费看av不卡| 成人激情在线观看| 91精品国产综合久久久久久久久| 欧美极品美女视频网站在线观看免费| 日韩美女免费视频| 色综合91久久精品中文字幕| 国产精品丝袜视频| 欧美肥老太性生活视频| 免费99精品国产自在在线| 亚洲男子天堂网| 综合网中文字幕| 国产日韩欧美视频| 亚洲精品国产精品乱码不99按摩| 免费91麻豆精品国产自产在线观看| 亚洲人精选亚洲人成在线| 久久精品国产精品| 成人在线小视频| 国产精品18久久久久久首页狼| 欧美在线视频免费| 色伦专区97中文字幕| 久久成人精品视频| 97精品久久久| 九九热精品视频国产| 久久久中精品2020中文| 亚洲国产精品女人久久久| 欧美日韩亚洲一区二区| 亚洲欧美色图片| 538国产精品一区二区免费视频| 国产精品免费视频xxxx| 国产一区二区三区视频在线观看| 国产精品嫩草视频| 精品久久久999| 国产精品久久久久久av下载红粉| 伊人亚洲福利一区二区三区| 国产成人av网址| 国产精品va在线| 国产在线一区二区三区| 日日骚久久av| 亚洲精品一区中文| 国产精品久久久久久搜索| 国产福利精品av综合导导航| 久久国产精品免费视频| 久久精品电影一区二区| 国产精品吹潮在线观看| 国产一区二区三区18| 日韩精品在线电影| 91手机视频在线观看| 欧美黄色小视频| 国产欧美亚洲精品| 国产亚洲精品久久久久久牛牛| 欧美日韩在线视频观看| 国产精品欧美日韩一区二区| 欧美日韩国产一区二区三区| 欧美午夜女人视频在线| 亚洲福利在线观看| 国产精品ⅴa在线观看h| 亚洲aⅴ男人的天堂在线观看| 欧美性20hd另类| 久久男人av资源网站| 国产一区二区三区中文| 97精品一区二区视频在线观看| 66m—66摸成人免费视频| 欧美视频一二三| 伊人伊人伊人久久| 亚洲欧美国产日韩天堂区| 91精品国产91久久久久久不卡| 欧美亚洲国产视频|