父类与子类间的隐藏与重写
父類與子類間的隱藏與重寫例子(改寫一題面試題)
(1)隱藏
當(dāng)分別位于父類和子類的兩個(gè)方法完全一樣時(shí),調(diào)用哪個(gè)方法由對(duì)象變量的類型決定。
using System; public class A { public A() { Console.WriteLine("A"); } public virtual void Fun() { Console.WriteLine("A.Fun()"); } } public class B : A { public B() { Console.WriteLine("B"); } public new void Fun() { Console.WriteLine("B.Fun()"); } public static void Main() { A a = new A(); //A a.Fun(); //A.Fun(); B b = new B(); //A B 創(chuàng)建子類對(duì)象時(shí),先調(diào)用父類構(gòu)造函數(shù),再調(diào)用子類構(gòu)造函數(shù) b.Fun(); //B.Fun(); a = b; a.Fun(); //A.Fun(); (a as B).Fun(); //B.Fun(); (a as A).Fun(); //A.Fun(); Console.ReadKey(); } }
(2)重寫
將父類方法定義為虛方法,子類重寫同名方法后,通過父類變量調(diào)用哪個(gè)方法由對(duì)象變量引用的真實(shí)對(duì)象決定,而與變量自身所屬的類型無關(guān)。
using System; public class A { public A() { Console.WriteLine("A"); } public virtual void Fun() { Console.WriteLine("A.Fun()"); } } public class B : A { public B() { Console.WriteLine("B"); } public override void Fun() { Console.WriteLine("B.Fun()"); } public static void Main() { A a = new A(); //A a.Fun(); //A.Fun(); B b = new B(); //A B b.Fun(); //B.Fun(); a = b; a.Fun(); //B.Fun(); (a as B).Fun(); //B.Fun(); (a as A).Fun(); //B.Fun(); Console.ReadKey(); } } ?
轉(zhuǎn)載于:https://www.cnblogs.com/gdjlc/archive/2009/12/12/2086938.html
總結(jié)
以上是生活随笔為你收集整理的父类与子类间的隐藏与重写的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 美国影视演员协会选择了Windows A
- 下一篇: 301重定向IIS设置,及伪静态后 30