【C#】重寫和重載的區別


導讀:學習C#的時候,其實沒想那么多的。就想着把視頻看完,把例子做一下就好了,其實真心不懂那些玩意兒是什么,就好像是又回到了學VB的時候。可是,邊上師哥壓榨我這本就不聰明的腦袋瓜,問了我好多問題,於是乎,昏天暗地的去給這些問題找答案。唉!那天,師哥問了我幾個問題:構造函數是干什么的?重寫是什么?重載是什么?重寫和重載的區別的是什么?它們分別怎么用?額,先簡單說一下吧,以后認識深刻了,再回頭修改。


一、基本定義

構造函數:是一種特殊的方法 。主要用來在創建對象時初始化對象, 即為對象成員變量賦初始值,總與new運算符一起使用在創建對象的語句中 。特別的一個類可以有多個構造函數 ,可根據其參數個數的不同或參數類型的不同來區分它們 即構造函數的重載。((C#中講面向對象的繼承的時候講了,我是沒怎么在意,師哥那么一說,才。。。。。)

重寫:當一個子類繼承一父類,而子類中的方法與父類中的方法的名稱,參數個數、類型都完全一致時,就稱子類中的這個方法重寫了父類中的方法。

重載:一個類中的方法與另一個方法同名,但是參數表不同,這種方法稱之為重載方法。

PS:理解概念

重載:當年,大街上遇上了一個男的,對他產生了深深地愛意。事過多年,在同一個地點,遇上了同一個人,但此時,再也產生不了當年的愛意。同樣的大街(類),同樣的人(方法),因為條件改變(參數類型),就再也產生不了愛意(返回結果),這時候,我的感情就被重載了。(或許是厭惡、是冷漠)


二、實現方法

重寫:通常,派生類繼承基類的方法。因此,在調用對象繼承方法的時候,調用和執行的是基類的實現。但是,有時需要對派生類中的繼承方法有不同的實現。例如,假設動物類存在“跑"的方法,從中派生出馬和狗,馬和狗的跑得形態是各不相同的,因此同樣方法需要兩種不同的實現,這就需要"重新編寫"基類中的方法。"重寫"基類方法就是修改它的實現或者說在派生類中重新編寫。

重載:在一個類中用相同的名稱但是不同的參數類型創建一個以上的過程、實例構造函數或屬性。


三、舉例說明

1,重寫

<span style="font-size:18px;"><span style="font-family:KaiTi_GB2312;font-size:18px;">using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace OverrideTest
{
    class Program
    {
        static void Main(string[] args)
        {
            my HHX = new my();
            HHX.talk();
        }
        public class you
        {
            public virtual void talk()
            {
                Console.WriteLine("one");
            }
        }
        public class my : you
        {
            public override void talk()
            {
                Console.WriteLine("two");
            }
        }
    }
}</span></span>
輸出結果:

2,重載

<span style="font-size:18px;"><span style="font-family:KaiTi_GB2312;font-size:18px;">using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace 重載
{
    class Program
    {
        static void Main(string[] args)
        {
            string s = null;
            show(s);
            object a = "123";
            show(a);
        }
        
            static void show(string s)
            {
                Console.WriteLine("string");
            }
            static void show(object o)
            {
                Console.WriteLine("object");
            }
        }
    }</span><span style="font-family:KaiTi_GB2312;font-size:24px;">
</span></span>
輸出結果:



四、區別

經過上面的兩個簡單例子,現在,總結一下重載和重寫的區別。


五、個人總結

其實吧,開始挺討厭師哥的(反正師哥沒加我博客,哈哈)。都學了那么久了,懂得肯定比我多很多,每次那么一說,我這就心疼、肝疼,敢情自己折騰了半天,到那兒了還不夠師哥噻牙縫呢。開始是怎么做怎么都不對,自己覺得挺對的,師哥一看就又不對了。說句良心話,真的很受挫,都不想學習了。

其實吧,師哥也挺好的。老師說了:不怕不知道,就怕不知道。雖然對於這些問題還是有問題,但總比什么都不知道的好,這次懂點,下次懂點,指不准哪天就懂了。所以說:何下下同學,好好學習吧,咱得越挫越勇才行!



免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM