入门!c#面向对象小白,密封方法题求改改,

namespace P5_5
{
class Program
{
static void Main(string[] args)
{
Vehicle v1 = new Train();
v1.Speak();
Console.WriteLine("行驶1000公里需{0}小时",v1.Run(1000));
v1=new Truck(16,24);
v1.Speak();
Console.WriteLine("行驶1000公里需{0}小时",v1.Run(1000));
}
}
public abstract class Vehicle
{
private float speed;
public float Speed
{
get { return speed; }
}
public virtual float Run(float distance)
{
return distance / speed;

    }

将P5_5例题中基类Automobile的Speak方法加修饰符sealed,请相应地修改程序。

    public   abstract void Speak();
    public Vehicle(float speed)
    {
        this.speed = speed;
    }
}
public class Train : Vehicle
{
    public Train()
        : base(160)
    { }
    public override void Speak()
    {
        Console.WriteLine("呜......");
    }
}
public abstract   class Automobile : Vehicle 
{
    public Automobile(float speed) : base(speed)
    { }
    public sealed  override abstract   void Speak();

}
public class Truck:Automobile 
{
    private float weight;
    public float Weight
    {
        get{return weight ;}
    }
    private float load;
    public float Load
    {
        get{return load;}
    }
    public Truck(int weight,int load):base(50)
    {
        this.weight=weight;
        this.load=load;
    }
    public override float  Run(float distance)
    {
        return (1+load/Weight/2)*base.Run(distance);
    }
    public  override  void  Speak()
    {
       Console.WriteLine ("叭......叭......");
    }
}

}

 加修饰符sealed后派生类不能再用override了

public  new  void  Speak()
    {
       Console.WriteLine ("叭......叭......");
    }

v1=new Truck(16,24);
v1.Speak();
->
v1=new Truck(16,24);
(v1 as Truck).Speak();