C#與Java多態方面的文法差異

來源:互聯網
上載者:User

標籤:code   write   href   other   com   多態   read   static   證明   

C#與Java多態方面的文法差異

2016-11-29

Java代碼:
public static void main(String[] args) {        Mother mother=new Mother();        mother.showName();        Mother human=new Son();        human.showName();        Son sona=new Son();        sona.showName();}    public class Mother {    public void showName(){        System.out.println("媽媽");    }}public class Son extends Mother {        public void showName(){        System.out.println("兒子");    }    }

結果:

媽媽兒子兒子
C#代碼:
    class Program    {        public static void Main()        {            Mother mother = new Mother();            mother.ShowName();            Mother human = new Son();            human.ShowName();            Son sona = new Son();            sona.ShowName();            Console.Read();        }    }    public class Mother    {       public virtual void ShowName()        {            Console.WriteLine("媽媽");        }    }    public class Son : Mother    {        public override void ShowName()        {            Console.WriteLine("兒子");        }    }

結果:

媽媽兒子兒子

但如果把override去了,將會出現一行警告,但編譯器不會報錯:

警告 1 “ConsoleApplication1.Son.ShowName()”隱藏了繼承的成員“ConsoleApplication1.Mother.ShowName()”。如果是有意隱藏,請使用關鍵字 new

 結果為:

媽媽媽媽兒子
結論:

由此證明,C#預設情況下是不支援多態的,子類預設情況下有個new關鍵字。C#若要實現多台需要在方法前添加virtual和override

另外,多態指的是方法,詳情見 只有多態方法,沒有多態執行個體欄位

C#與Java多態方面的文法差異

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.