欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C#中多態(tài)性的實(shí)現(xiàn)

 更新時(shí)間:2020年02月04日 10:37:05   作者:LLLLL__  
這篇文章主要介紹了C#中多態(tài)性的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

C#語(yǔ)言三大特性:繼承,封裝,多態(tài)

一:多態(tài)性

多態(tài)是指一個(gè)行為具有多個(gè)不同表現(xiàn)形式的能力,在C#中通過(guò)多態(tài)性的檢測(cè)時(shí)機(jī)可以分為靜態(tài)多態(tài)性和動(dòng)態(tài)多態(tài)性
靜態(tài)多態(tài)性:函數(shù)重載和運(yùn)算符重載
動(dòng)態(tài)多態(tài)性:抽象方法、重寫(xiě)方法、隱藏方法

二:函數(shù)重載(overlode)

——函數(shù)名必須相同

——函數(shù)參數(shù)類(lèi)型不同

——函數(shù)參數(shù)個(gè)數(shù)不同

——函數(shù)參數(shù)順序不同

三:抽象(abstract)

——包含抽象函數(shù)的類(lèi),類(lèi)也必須定義為抽象的

——抽象函數(shù)只有定義沒(méi)有函數(shù)體,并且必須定義為public

——抽象類(lèi)中可以包含普通函數(shù)和抽象函數(shù)

——抽象類(lèi)不能實(shí)例化,不能使用抽象類(lèi)去構(gòu)造對(duì)象,但是可以使用抽象類(lèi)去聲明對(duì)象

可以在類(lèi)前添加sealed關(guān)鍵字,使類(lèi)變?yōu)槊芊忸?lèi),密封類(lèi)有以下特點(diǎn):
——不能被繼承,所以密封類(lèi)中不能定義虛方法和抽象方法,抽象類(lèi)不能定義為sealed
——重寫(xiě)的方法可以聲明為密封方法,表示該方法不能被子類(lèi)重寫(xiě)

四:虛方法(virtual)

抽象方法與虛方法區(qū)別:
——抽象函數(shù)不能有函數(shù)體,虛函數(shù)必須有函數(shù)體
——當(dāng)繼承了一個(gè)抽象類(lèi)時(shí),必須去實(shí)現(xiàn)抽象函數(shù),抽象函數(shù)也只能在子類(lèi)中去實(shí)現(xiàn)。但是虛函數(shù)可以在基類(lèi)實(shí)現(xiàn)也可以在子類(lèi)重寫(xiě)
——抽象函數(shù)必須在抽象類(lèi)中,虛函數(shù)不必須在抽象類(lèi)中

五:重寫(xiě)方法(override)與隱藏方法(new)

——隱藏方法的調(diào)用(用什么類(lèi)型來(lái)聲明,在調(diào)用方法的時(shí)候就會(huì)調(diào)用什么類(lèi)型的方法)
——重寫(xiě)方法的調(diào)用(用什么類(lèi)型來(lái)構(gòu)造,在調(diào)用方法的時(shí)候就會(huì)調(diào)用什么類(lèi)型的方法)

class Enemy
{
 public void Move()
 {
  Console.WriteLine("Enemy Move");
 }
 
 public virtual void Attack()
 {
  Console.WriteLine("Enemy Attack");
 }
}
 
class Boss : Enemy
{
 public override void Attack()
 {
  Console.WriteLine("Boss Attack");
 }
 
 public new void Move()
 {
  Console.WriteLine("Boss Move");
 }
}
 
class MainClass
{
 static void Main(string[] args)
 {
  //=====隱藏方法的調(diào)用(用什么類(lèi)型來(lái)聲明,在調(diào)用方法的時(shí)候就會(huì)調(diào)用什么類(lèi)型的方法)
  Boss oneEnemy = new Boss();
  oneEnemy.Move(); //調(diào)用的是隱藏方法,用子類(lèi)的聲明來(lái)調(diào)用的,調(diào)用的就是子類(lèi)的Move
  Enemy twoEnemy = new Boss();
  twoEnemy.Move(); //調(diào)用的隱藏方法,用父類(lèi)的聲明來(lái)調(diào)用的,調(diào)用的就是父類(lèi)的Move方法
 
  //=====虛方法的調(diào)用(用什么類(lèi)型來(lái)構(gòu)造,在調(diào)用方法的時(shí)候就會(huì)調(diào)用什么類(lèi)型的方法)
  Enemy threeEnemy = new Enemy();
  threeEnemy.Attac(); //調(diào)用虛方法,用父類(lèi)來(lái)實(shí)例化的,所以調(diào)用的是父類(lèi)的Attac方法
  Enemy fourEnemy = new Boss();
  fourEnemy.Attac(); //調(diào)用虛方法,用子類(lèi)來(lái)實(shí)例化的,所以調(diào)用的就是子類(lèi)(Boss)的Attac方法
 }
}

virtual與new的原理:https://www.runoob.com/w3cnote/csharp-polymorphism2.html

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • DataTables List互相轉(zhuǎn)換的實(shí)現(xiàn)類(lèi)示例

    DataTables List互相轉(zhuǎn)換的實(shí)現(xiàn)類(lèi)示例

    這篇文章主要介紹了將DataTable轉(zhuǎn)換為L(zhǎng)ist,將List轉(zhuǎn)換為DataTable的實(shí)現(xiàn)類(lèi)實(shí)例方法,大家參考使用吧
    2013-11-11
  • 基于C#技術(shù)實(shí)現(xiàn)身份證識(shí)別功能

    基于C#技術(shù)實(shí)現(xiàn)身份證識(shí)別功能

    這篇文章主要介紹了基于C#技術(shù)實(shí)現(xiàn)身份證識(shí)別功能的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2016-07-07
  • C#集合查詢(xún)Linq在項(xiàng)目中使用詳解

    C#集合查詢(xún)Linq在項(xiàng)目中使用詳解

    本文主要介紹了C#集合查詢(xún)Linq在項(xiàng)目中使用詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-05-05
  • C# cmd中修改顯示(顯示進(jìn)度變化效果)的方法

    C# cmd中修改顯示(顯示進(jìn)度變化效果)的方法

    好多人想在運(yùn)行或者調(diào)試含有大量數(shù)據(jù)或者比較慢C#程序的時(shí)候能夠顯示自己的程序完成的程度,這里有一個(gè)方法能發(fā)不斷地修改cmd的同一行,以達(dá)到顯示完成百分比的目的
    2013-04-04
  • C# 二進(jìn)制數(shù)組與結(jié)構(gòu)體的互轉(zhuǎn)方法

    C# 二進(jìn)制數(shù)組與結(jié)構(gòu)體的互轉(zhuǎn)方法

    本文將和大家介紹 MemoryMarshal 輔助類(lèi),通過(guò)這個(gè)輔助類(lèi)用來(lái)實(shí)現(xiàn)結(jié)構(gòu)體數(shù)組和二進(jìn)制數(shù)組的相互轉(zhuǎn)換,對(duì)C# 二進(jìn)制數(shù)組與結(jié)構(gòu)體的互轉(zhuǎn)方法感興趣的朋友一起看看吧
    2023-09-09
  • C#使用RegNotifyChangeKeyValue監(jiān)聽(tīng)注冊(cè)表更改的方法小結(jié)

    C#使用RegNotifyChangeKeyValue監(jiān)聽(tīng)注冊(cè)表更改的方法小結(jié)

    RegNotifyChangeKeyValue的最后一個(gè)參數(shù)傳遞false,表示以同步的方式監(jiān)聽(tīng),這篇文章主要介紹了C#使用RegNotifyChangeKeyValue監(jiān)聽(tīng)注冊(cè)表更改的方法小結(jié),需要的朋友可以參考下
    2024-06-06
  • 基于C#實(shí)現(xiàn)設(shè)置桌面背景功能

    基于C#實(shí)現(xiàn)設(shè)置桌面背景功能

    這篇文章主要為大家詳細(xì)介紹了如何利用C#實(shí)現(xiàn)設(shè)置桌面背景功能,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)C#有一定的幫助,感興趣的小伙伴可以跟隨小編一起了解一下
    2022-12-12
  • winform模擬鼠標(biāo)按鍵的具體實(shí)現(xiàn)

    winform模擬鼠標(biāo)按鍵的具體實(shí)現(xiàn)

    這篇文章介紹了winform模擬鼠標(biāo)按鍵的具體實(shí)現(xiàn),有需要的朋友可以參考一下
    2013-10-10
  • C#逐行讀取文件的方法

    C#逐行讀取文件的方法

    這篇文章主要介紹了C#逐行讀取文件的方法,針對(duì)較大文件的讀取非常實(shí)用,需要的朋友可以參考下
    2015-07-07
  • 設(shè)計(jì)模式速記

    設(shè)計(jì)模式速記

    本文主要介紹了設(shè)計(jì)模式:創(chuàng)建型模式;結(jié)構(gòu)型模式;行為型模式三大類(lèi)。具有很好的參考價(jià)值,相信有助于大家記憶與學(xué)習(xí),下面跟著小編一起來(lái)看下吧
    2017-02-02

最新評(píng)論