c#多型性
class Program
{
static void Main(string[] args)
{
Car c1 = new Car();
c1.F();//透過new隱藏了父類的同名方法
Console.ReadKey();
c1.G();//重寫了父類的G方法
Console.ReadKey();
Vehicle v1 = c1;
v1.F();//最終到底是呼叫CAR類還是呼叫父類VECHICLE類的F方法呢 //這個會呼叫父類的F方法,而不是子類的NEW同名方法
Console.ReadKey();
v1.G();//同上 //最終呼叫還是C1的重寫方法G,這就是執行時狀態決定,
Console.ReadKey();
}
}
public class Vehicle
{
//編譯時多型性;是透過過載實現的,即方法過載和運算子過載
//執行時多型性,是直到系統執行時,才根據實際情況決定實現何種操作.這種多型性是透過虛成員實現
//編譯多型性為我們提供了執行速度快,而執行時多型則有高度靈活和抽象的特點
public void F()
{
Console.WriteLine("vehicle類的F方法,它是非虛virtual方法");
}
public virtual void G()
{
Console.WriteLine("vehicle類的G方法,它是虛virtual方法");
}
}
class Car : Vehicle
{
new public void F() //
{
Console.WriteLine("透過NEW其實是隱藏了父類同名的方法F,而非重寫");
}
public override void G()
{
Console.WriteLine("重寫了vehicle類的G方法,實現多型性");
}
}
{
static void Main(string[] args)
{
Car c1 = new Car();
c1.F();//透過new隱藏了父類的同名方法
Console.ReadKey();
c1.G();//重寫了父類的G方法
Console.ReadKey();
Vehicle v1 = c1;
v1.F();//最終到底是呼叫CAR類還是呼叫父類VECHICLE類的F方法呢 //這個會呼叫父類的F方法,而不是子類的NEW同名方法
Console.ReadKey();
v1.G();//同上 //最終呼叫還是C1的重寫方法G,這就是執行時狀態決定,
Console.ReadKey();
}
}
public class Vehicle
{
//編譯時多型性;是透過過載實現的,即方法過載和運算子過載
//執行時多型性,是直到系統執行時,才根據實際情況決定實現何種操作.這種多型性是透過虛成員實現
//編譯多型性為我們提供了執行速度快,而執行時多型則有高度靈活和抽象的特點
public void F()
{
Console.WriteLine("vehicle類的F方法,它是非虛virtual方法");
}
public virtual void G()
{
Console.WriteLine("vehicle類的G方法,它是虛virtual方法");
}
}
class Car : Vehicle
{
new public void F() //
{
Console.WriteLine("透過NEW其實是隱藏了父類同名的方法F,而非重寫");
}
public override void G()
{
Console.WriteLine("重寫了vehicle類的G方法,實現多型性");
}
}
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/9240380/viewspace-718083/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- C# 多型性C#多型
- C# 多型性C#多型
- c#多型性測試小例C#多型
- 多型性多型
- 多型性概述多型
- C#中的多型C#多型
- C++多型性C++多型
- c#重寫和多型C#多型
- java多型性淺析Java多型
- 精讀《React 的多型性》React多型
- Rust 的三種多型性Rust多型
- 多型性----vptr----vtable多型
- 多型性的論述 (轉)多型
- c#——泛型的多種應用C#泛型
- 多型體驗,和探索爺爺類指標的多型性多型指標
- C#中繼承和多型的研究C#中繼繼承多型
- C#特性-匿名型別與隱式型別區域性變數C#型別變數
- c# 中的封裝、繼承、多型詳解C#封裝繼承多型
- c# saf 框架欄位屬性多層巢狀示例C#框架巢狀
- JAVA多型性<==>我和網友交流實錄 (轉)Java多型
- C#之多型C#多型
- C# 泛型C#泛型
- C#泛型C#泛型
- 【C#】-泛型C#泛型
- C#隱式型別區域性變數經驗總結C#型別變數
- 多型。多型
- 多型~多型
- 多型多型
- C#自學(一)委託(delegate)、委託泛型、多播委託C#泛型
- C#支援將json中的多種型別反序列化為object型別C#JSON型別Object
- c#:值型別&引用型別C#型別
- C# 泛型方法C#泛型
- hashtable 泛型 C#泛型C#
- [C#]強型別C#型別
- c#泛型集合C#泛型
- c# hasvalue屬性C#
- 這樣理解,java繼承中多型的屬性和方法Java繼承多型
- Rust 中的位元組序、API 設計和多型性 - JimmyRustAPI多型