我正在努力解决这项功课。我已经走到了尽头,我正在寻找可以帮助解决这个问题的人。
这是我要解决的任务:
工作2:抽象类不是一个完整的类,它错过了一些 零件,你不能从它创建对象。程序员谁 编写派生类必须填写缺少的部分。考虑 一个抽象类车辆。从此类派生两个层次结构 如下所示:现在,写4个类,看黄色矩形。 从抽象基类Vehicle - >开始车轮有4个轮子 - >跑车和派对级拉力赛,这是最具体的类。 Vehicle类包含一个字段 保存车辆名称和抽象方法void Display()。
在派生类中实现此函数,以便该函数 返回有关车辆的信息,例如电机功率等 必要的属性。最后一个派生类具有私有字段 保持电机功率,汽车重量,汽车加速度, 最高速度和计算特定功率的功能(功率 /重量)。函数Display返回包含所有这些的文本字符串 信息。在使用的控制台应用程序中测试您的工作 运动车和拉力赛类型的物体。
类车辆:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace A_work_2
{
public abstract class Vehicle
{
public string vehicleName;
public abstract void Display();
}
}
类Vehicle4Wheels:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace A_work_2
{
public class Vehicle4Wheels : Vehicle
{
public override void Display()
{
Console.WriteLine("Car with four wheels.");
}
}
}
Class SportCar:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace A_work_2
{
public class SportCar : Vehicle4Wheels {
public override void Display()
{
Console.WriteLine("Sport version of the car.");
}
}
}
班级拉力赛:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace A_work_2
{
public class Rally : SportCar
{
private double motorPower = 408;
private double carWeight = 2380;
private double carAcceleration = 4.7;
private double highestSpeed = 250;
public double SpecificPower()
{
double specificPower = motorPower / carWeight;
return specificPower;
}
public override void Display()
{
Console.WriteLine("The acceleration is: {0}.\nThe highest speed is {1} km/h.", carAcceleration, highestSpeed);
Console.WriteLine("Specific power is {0}", SpecificPower());
}
}
}
我不确定我是否清楚地理解了这项任务,而且到目前为止,我还不知道我是否采取了正确的方法来实现这一目标。我非常不理解抽象类和无意义。
感谢您的帮助!
诉P>
编辑:我的问题是:如何更改我编写的代码以完成我给出的任务?因为我不确定在编写代码时如何变通。当我将car属性添加到Vehicle4Wheels类时,如:
private double carWeight;
如何在以后的派生类中处理此属性?
答案 0 :(得分:2)
其中一些值(highestSpeed,carWeight等)可以应用于任何“4轮车辆”(甚至是“车辆”),因此您可以在<? em>那级别。
在构造函数(派生类的构造函数)中,您可以为这些属性提供值。
然后,Display方法可以读取这些属性,因此您甚至不必在更高级别上覆盖该方法。
另请参阅http://msdn.microsoft.com/en-us/library/ms173115.aspx,关于构造函数以及如何从派生类的构造函数中调用基类的构造函数。
答案 1 :(得分:1)
我不确定我是否清楚地理解了这项任务,而且到目前为止,我还不知道我是否采取了正确的方式来实现这一目标
所以,让我们回顾一下你到目前为止所得到的......
当我将car属性添加到Vehicle4Wheels类时,如:
私人双车重;
那么我怎样才能在以后的派生类中处理这个属性呢?
你的家庭作业并没有让你担心。
“最后派生的类具有保持电机功率的私有字段,汽车重量,汽车加速度,最高速度以及计算特定功率(功率/重量)的功能”
你已经很好地实现了这一点。您缺少的部分是:
“在使用运动车和拉力赛类型对象的控制台应用程序中测试您的工作。”
一旦你实现了这一点,你就会理解你所写的所有代码的重点。
为了让它变得有趣,所以你得到了练习的重点,确保你的控制台应用程序做了这样的事情:
Vehicle sportCar = new SportCar();
sportCar.Display();
Vehicle rally = new Rally();
rally.Display();
注意我没有说Rally rally = new Rally();
另请注意Vehicle something = new SportsCar();
有效。尝试添加一行:Vehicle something = new Vehicle();
- 它不会编译。
这一切都将展示继承和(抽象)基类型的一些最重要的部分:
尝试这一切,看看会发生什么。