C#中重載與重寫區(qū)別分析
一、前言
接觸面向?qū)ο蟮乃枷胍呀?jīng)有一段時(shí)光了,為什么要學(xué)習(xí)面向?qū)ο竽??因?yàn)槊嫦驅(qū)ο缶哂锌蓮?fù)用性、可維護(hù)性、可擴(kuò)展性等優(yōu)點(diǎn)。
本人之前一直接觸的是VB語言,所以正式接觸面向?qū)ο蟮木幊陶Z言還要從C#開始。前段時(shí)間,剛學(xué)完C#,其中重載、重寫傻傻分不清楚。如今通過查閱資料對(duì)這兩者有了一個(gè)大概的理解,不足之處還請(qǐng)多多指教。
二、定義
重載:在同一定義域內(nèi)(比如一個(gè)類里面)。方法名相同,參數(shù)個(gè)數(shù)、次序、類型不同。因此重載對(duì)返回值沒有要求,可以相同,也可以不同。但是如果方法名相同,參數(shù)個(gè)數(shù)、次序、類型都相同,而返回值不同,則無法構(gòu)成重載。
重寫:繼承時(shí)發(fā)生,在子類中重寫定義父類中的方法,子類中的方法和父類中的方法是一樣的。即方法名、參數(shù)的個(gè)數(shù)、次序、類型和返回值都相同。例如父類方法聲明為virtual(虛方法),子類中使用override申明此方法的重寫。
三、示例
1、重載:
我們建立一個(gè)貓類,在這個(gè)類中構(gòu)造兩個(gè)方法。一個(gè)是帶參數(shù)姓名的方法,另一個(gè)是不帶參數(shù)姓名的方法。這樣當(dāng)我們初始化一個(gè)“貓”的對(duì)象時(shí),就可以選擇給對(duì)象起名或者不起名。從而達(dá)到擴(kuò)展的目的。

2、 重寫:
比如動(dòng)物都有“叫”的方法。貓和狗是它的子類,貓的叫聲是“喵”,狗的叫聲是“汪”,如何在子類中重寫父類的方法呢?首先在動(dòng)物類中構(gòu)造一個(gè)虛方法。
Class Animal
{
public virtual string Shout()//注意修飾符中增加了一個(gè)virtual,它表示此方法是虛方法,可以被子類重寫
{
return "";
}
}
在構(gòu)建貓這個(gè)類時(shí),我們重寫“叫”這個(gè)方法
Class cat:Animail
{
Public override string Shout()
{//關(guān)鍵字override,表示方法重寫
string result="喵";
return result;
}
}
在構(gòu)建狗這個(gè)類時(shí),我們也重寫“叫”這個(gè)方法
Class Dog:Animal
{
public override string Shout()
{
string result="汪";
return result;
}
}
重寫發(fā)生在父類和子類之間,聲明的是父類,實(shí)例化的是子類。本例子實(shí)現(xiàn)了多態(tài)。
四、小結(jié)
重載必須發(fā)生在一個(gè)類中,方法名相同,參數(shù)不同。值得注意的是,方法重載必須通過參數(shù)不同來判斷調(diào)用哪個(gè)方法,而不能通過返回值。
重寫override一般用于接口實(shí)現(xiàn)和繼承類的方法改寫。值得注意的是,被覆蓋的方法不能為private,否則在其子類中只是新定義了一個(gè)方法,并沒有進(jìn)行覆蓋。
以上就是本文的全部?jī)?nèi)容,希望大家對(duì)C#中重載與重寫的異同有所了解,謝謝大家的閱讀。
相關(guān)文章
C#實(shí)現(xiàn)創(chuàng)建標(biāo)簽PDF文件的示例代碼
標(biāo)簽PDF文件包含描述文檔結(jié)構(gòu)和各種文檔元素順序的元數(shù)據(jù),是一種包含后端提供的可訪問標(biāo)記,管理閱讀順序和文檔內(nèi)容表示的邏輯結(jié)構(gòu)的PDF文件。本文將用C#實(shí)現(xiàn)創(chuàng)建標(biāo)簽PDF文件,需要的可以參考一下2022-08-08
詳解C#借助.NET框架中的XmlTextReader類讀取XML的方法
這篇文章主要介紹了詳解借助.NET框架中的XmlTextReader類讀取XML的方法,這種方式的執(zhí)行效率還是比較令人滿意的,需要的朋友可以參考下2016-04-04
WinForm窗體調(diào)用WCF服務(wù)窗體卡死問題
在Winform窗體中調(diào)用部署在其他服務(wù)器中的WCF服務(wù)時(shí),由于調(diào)用服務(wù)需要一定時(shí)延,因此窗體在這段時(shí)間一直卡住不能進(jìn)行其他操作2012-12-12
在C#程序中對(duì)MessageBox進(jìn)行定位的方法
這篇文章主要介紹了在C#程序中對(duì)MessageBox進(jìn)行定位的方法,針對(duì)圖形化界面進(jìn)行調(diào)試,需要的朋友可以參考下2015-07-07
用Newtonsoft將json串轉(zhuǎn)為對(duì)象的方法(詳解)
下面小編就為大家?guī)硪黄肗ewtonsoft將json串轉(zhuǎn)為對(duì)象的方法(詳解)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-04-04

