程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> C#——向上轉型

C#——向上轉型

編輯:C#入門知識

在學習C#的過程中,一些基礎知識比如數據類型、控制結構、數組等都與之前接觸的語言大同小異,還能夠理解,但是向上轉型這個概念還是第一次遇到。

學習了一下後大致理解如下:

向上轉型就是將子類轉型成父類,對象可以作為它本身的類型使用。

先來看一段代碼:

public class Animal
    {
        public virtual void Eat()
        {
            Console.WriteLine("我是動物,我要吃東西!");
        }
    }
    public class Bird : Animal
    {
        public override void Eat()
        {
            Console.WriteLine("我是鳥,我要吃東西!");
        }
    }
    class Test
    {
        static void Main(string[] args)
        {
            Animal animal = new Bird();  //向上轉型
              animal.Eat();
        }
    }

上述例子中我們定義了一個動物類(其中有吃東西的方法),鳥類繼承了動物類(重寫了基類中吃東西的方法),主函數中生命animal為Animal類型的對象,但運行結果並不是我們預期的那樣,而是顯示“我是鳥,我要吃東西!”。

\

對於這個例子。聲明animal的時候,animal的類型為Animal。但是animal所指向的實例為Animal的子類即Bird。

當然有向上轉型就有向下轉型,方式當然也是相反,即將父類轉換成子類。

在網上看到一個問題,有人說“如果子類中所需要的功能在父類中存在,就使用向上轉型;如果父類所需要的功能在子類中存在,就使用向下轉型”,但是如上例所述,Bird是Animal的子類,Bird已經繼承了Animal中的方法,為什麼還要使用向下轉型呢?即為什麼定義Animal的時候要用“Animal animal=new Bird();”而不是“Bird animal=new Bird();”呢?

懇請朋友們不吝賜教,提出寶貴的意見和建議。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved