嵌入式开发从基础到提高
源代码在线查看: program.cs
using System;
using System.Collections.Generic;
using System.Text;
namespace 虚方法实现时间显示
{
/************************
* 程序描述:使用虚方法显示时间。小时、分钟和秒都由不同的类来封装,并有一个继承关系,
* 分钟和秒各自把相应的参数传送给自己的父类。在调用相应的方法ViewAllTime()
* 进行时间显示时,并不知道到会进行怎样的显示。这就是多态,运行时才可以确定
* 到底调用哪个方法。
* 创 建 人:ncbcy@eiTarget
* 版 本 号:1.0.0
* 修改记录:0
***********************/
class Program
{
static void Main(string[] args)
{
Hour h = new Hour(23);
Minute m = new Minute(23,55);
Second s = new Second(23, 55, 11);
ViewAllTime(h);
ViewAllTime(m);
ViewAllTime(s);
Console.ReadLine();
}
static void ViewAllTime(Hour ViewAllTimeRef)
{
ViewAllTimeRef.ViewTime();
}
}
class Hour
{
protected byte byteHour;
public Hour(byte byteHour)
{
this.byteHour = byteHour;
}
public virtual void ViewTime()
{
Console.WriteLine("使用类小时Hore实例对象的方法进行显示小时:" + byteHour);
}
}
class Minute : Hour
{
protected byte byteMinute;
public Minute(byte byteHour, byte byteMinute): base(byteHour)
{
this.byteMinute = byteMinute;
}
public override void ViewTime()
{
Console.WriteLine("使用类小时Hour的派生类分钟Minute的对象的方法进行显示小时和分钟:" + byteHour + ":" + byteMinute);
}
}
class Second : Minute
{
protected byte byteSecond;
public Second(byte byteHour, byte byteMinute, byte byteSecond): base(byteHour, byteMinute)
{
this.byteSecond = byteSecond;
}
public override void ViewTime()
{
Console.WriteLine("使用类分钟Minute的派生类秒Second的对象的方法进行显示小时、分钟和秒: " + byteHour + ":" + byteMinute + ":" + byteSecond);
}
}
}