在 C# 中,派生类可以包含与基类方法同名的方法。
using System;
using System.Collections.Generic;
public class Car
{
public virtual void DescribeCar()
{
Console.WriteLine("Base Car!");
}
}
public class ConvertibleCar : Car
{
public new void DescribeCar()
{
base.DescribeCar();
Console.WriteLine("Convertible Car!");
}
}
public class DerivedConvertibleCar : ConvertibleCar
{
public new void DescribeCar()
{
base.DescribeCar();
Console.WriteLine("DerivedConvertibleCar Car!");
}
}
public class DerivedMinivan : Minivan
{
public override void DescribeCar()
{
base.DescribeCar();
Console.WriteLine("DerivedMinivan Car!");
}
}
public class Minivan : Car
{
public override void DescribeCar()
{
base.DescribeCar();
Console.WriteLine("Minivan Car!");
}
}
public class CarCollections
{
public static void Main()
{
List cars = new List();
cars.Add(new Car());
cars.Add(new ConvertibleCar());
cars.Add(new Minivan());
cars.Add(new DerivedConvertibleCar());
cars.Add(new DerivedMinivan());
foreach (Car car in cars)
car.DescribeCar();
}
}
输出结果:
Base Car!【Car】
Base Car!【ConvertibleCar】
Base Car!
Minivan Car!【Minivan】
Base Car!【DerivedConvertibleCar】
Base Car!
Minivan Car!
DerivedMinivan Car!【DerivedMinivan 】
可以看到使用new和使用override的效果是不一样的。
发表于 @ 2008年07月18日 20:20:00 | 评论( loading... ) | 举报| 收藏