永发信息网

如何编程使用虚方法实现多态的方式?

答案:2  悬赏:60  手机版
解决时间 2021-04-05 16:40
作业一:模拟实现电器类工作
需求:创建电器类,实现不同电器的工作。用输出描述工作内容的语句来表示不同点器的工作方式或工作内容。
要求:
(1) 创建电器类,声明电器的属性:功率。并创建工作方法(要求以虚方法实现)。
(2) 创建电视机类和冰箱类继承电器类,重写电器类的工作方法。
(3) 根据兴趣,创建其它子类继承电器类,重写工作方法。
(4) 新建测试类,使用电器类引用电视对象和冰箱对象,调用工作方法让电视机和冰箱工作。
作业二:实现计算器
具体需要求:
(1)创建父类,添加两个属性,分别表示两个操作数,定义一个虚方法,实现运算,返回类型为double
(2)依次创建加减乘除的子类型,继承父类并重写虚方法。
(3)在按钮点击事件中,根据不同的运算符,创建不同的子类对象。调用方法实现不同的运算。
最佳答案
用C#写的
作业一:
public abstract class Appliance
{
protected double power = 0;
public double Power
{
set { power = value; }
get { return power; }
}

public virtual void Work()
{
Console.WriteLine("电器工作中……");
}
}

public class Fridge : Appliance
{
public override void Work()
{
string message = "电冰箱为食品保鲜";
if (power > 0)
{
message += ",功率为" + power.ToString() + "瓦";
}
Console.WriteLine(message);
}
}

public class TV : Appliance
{
public override void Work()
{
string message = "电视机播放节目";
if (power > 0)
{
message += ",功率为" + power.ToString() + "瓦";
}
Console.WriteLine(message);
}
}

public class Lamp : Appliance
{
public override void Work()
{
string message = "电灯发光";
if (power > 0)
{
message += ",功率为" + power.ToString() + "瓦";
}
Console.WriteLine(message);
}
}

客户端代码:
static void Main(string[] args)
{
Appliance app = new Lamp();
app.Power = 450;
app.Work();//输出“电灯发光,功率为450瓦”
}

作业二:
public abstract class Operate
{
protected double number1 = 0;
public double Number1
{
set { number1 = value; }
get { return number1; }
}

protected double number2 = 0;
public double Number2
{
set { number2 = value; }
get { return number2; }
}

public Operate(double number1, double number2)
{
this.number1 = number1;
this.number2 = number2;
}

public virtual double GetResult()
{
return 0;
}
}

public class Plus : Operate
{
public Plus(double number1, double number2)
: base(number1, number2)
{ }

public override double GetResult()
{
return number1 + number2;
}
}

public class Minus : Operate
{
public Minus(double number1, double number2)
: base(number1, number2)
{ }

public override double GetResult()
{
return number1 - number2;
}
}

public class Multiply : Operate
{
public Multiply(double number1, double number2)
: base(number1, number2)
{ }

public override double GetResult()
{
return number1 * number2;
}
}

public class Divide : Operate
{
public Divide(double number1, double number2)
: base(number1, number2)
{ }

public override double GetResult()
{
if (number2 != 0)
{
return number1 / number2;
}
else
{
throw new Exception("0不能作为除数");
}
}
}

客户端代码:
static void Main(string[] args)
{
Operate op = new Multiply (3.14, 10);
double result = op.GetResult();
Console.WriteLine("运算结果是" + result.ToString());
}

这道题你根据需要移植到窗体中,客户端代码稍作修改即可。
全部回答
以q.draw(new square());为例: 这条语句传入的是一个square对象,所以new square()先执行,输出正方形; 接着执行draw()方法,方法中执行输出语句,输出0; 所以输出结果为正方形,0. q.draw(new parallelogramgle());同理。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
怎么样才能使女人的胸部快速变大?
我对女朋友管的比较松这样对吗
我想练好声音唱歌,有几种
为我们打开它,这个钱包是谁的。的英语
刚上幼儿园寄语简短的,幼儿园开学寄语我想说
单选题Thereare168________inourschool.A.m
可以求联系方式吗,我想咨询一下浙大光学工程
林伟贤好员工观后感600字的 谢谢啊帮帮忙
我家有个铜瓶,大概值多少钱?
1.2T高速120多少转速,高速多少最省油
怎样更改dnf解除安全模式的方式
These only $20.A. jacket isB. jackets are
求windows xp系统能够支持的修图软件。家中电
流放之路寂静陵墓在哪
朵色气垫正品和高仿的区别
推荐资讯
2022年中国申奥的主要对手是哪个国家
佰仟分期逾期一个月还能分期吗
寻情侣名字
Adobe点了试用下载不了
裕园停车场这个地址在什么地方,我要处理点事
aoc lv273hip用的是哪个牌子的液晶面板
微生物学中“制曲”是什么意思
邮寄毛绒玩具时邮局用什么包装要进行压缩吗
为什么现在的网吧身份证非要成年,没成年就上
写早晨的经典诗词,关于昙花的古诗
本田新CRV的ECON键有什么用?
桂林那个区那条路上有平安银行
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?