永发信息网

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

答案:2  悬赏:60  手机版
解决时间 2021-04-05 16:40
  • 提问者网友:ミ烙印ゝ
  • 2021-04-05 01:41
作业一:模拟实现电器类工作
需求:创建电器类,实现不同电器的工作。用输出描述工作内容的语句来表示不同点器的工作方式或工作内容。
要求:
(1) 创建电器类,声明电器的属性:功率。并创建工作方法(要求以虚方法实现)。
(2) 创建电视机类和冰箱类继承电器类,重写电器类的工作方法。
(3) 根据兴趣,创建其它子类继承电器类,重写工作方法。
(4) 新建测试类,使用电器类引用电视对象和冰箱对象,调用工作方法让电视机和冰箱工作。
作业二:实现计算器
具体需要求:
(1)创建父类,添加两个属性,分别表示两个操作数,定义一个虚方法,实现运算,返回类型为double
(2)依次创建加减乘除的子类型,继承父类并重写虚方法。
(3)在按钮点击事件中,根据不同的运算符,创建不同的子类对象。调用方法实现不同的运算。
最佳答案
  • 五星知识达人网友:山君与见山
  • 2021-04-05 02:19
用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());
}

这道题你根据需要移植到窗体中,客户端代码稍作修改即可。
全部回答
  • 1楼网友:污到你湿
  • 2021-04-05 03:18
以q.draw(new square());为例: 这条语句传入的是一个square对象,所以new square()先执行,输出正方形; 接着执行draw()方法,方法中执行输出语句,输出0; 所以输出结果为正方形,0. q.draw(new parallelogramgle());同理。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯