using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace csharp_test { class Parentclass { public Parentclass() { Console.WriteLine("this is parentclass's cunstructor"); } public void print() { Console.WriteLine("this is parent 's print"); } } class Childclass : Parentclass { public Childclass() { Console.WriteLine("this is childclass's cunstructor"); } public void print() { Console.WriteLine("this is child 's print"); } static void Main(string []args) { Parentclass p = new Parentclass(); p.print(); Parentclass c = new Childclass(); c.print(); } } }
this is parentclass's cunstructor
this is parent 's print
this is parentclass's cunstructor
this is childclass's cunstructor
this is parent 's print
運行結果如上,可見,如果聲明一個父類對象指向子類對象,會調用父類的方法。
如果將子類的print方法刪除,仍然會調用父類的方法,但是如果刪除父類的方法,就會報錯。
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace csharp_test { class Parentclass { public Parentclass() { Console.WriteLine("this is parentclass's cunstructor"); } public void print() { Console.WriteLine("this is parent 's print"); } } class Childclass : Parentclass { public Childclass() { Console.WriteLine("this is childclass's cunstructor"); } public void print() { Console.WriteLine("this is child 's print"); } static void Main(string []args) { Parentclass p = new Parentclass(); p.print(); Childclass c = new Childclass(); c.print(); } } }
this is parentclass's cunstructor
this is parent 's print
this is parentclass's cunstructor
this is childclass's cunstructor
this is child 's print
運行結果如上,可見,如果聲明子類對象指向子類對象,會調用子類的方法。
如果刪除了子類方法,那么就會自動調用父類的print方法。
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace csharp_test { class Parentclass { public Parentclass() { Console.WriteLine("this is parentclass's cunstructor"); } public virtual void print() { Console.WriteLine("this is parent 's print"); } } class Childclass : Parentclass { public Childclass() { Console.WriteLine("this is childclass's cunstructor"); } public override void print() { Console.WriteLine("this is child 's print"); } static void Main(string []args) { Parentclass p = new Parentclass(); p.print(); Parentclass c = new Childclass(); c.print(); } } }
this is parentclass's cunstructor
this is parent 's print
this is parentclass's cunstructor
this is childclass's cunstructor
this is child 's print
結果如上所示,如果子類重寫了父類的方法,那么盡管父類是指向子類的,但是仍然會調用子類的方法。