c#抽象类
我必须创建一个假的DMV程序来计算商用和私人车辆的年费。 这两个类将是抽象的,它们将从名为所有车辆的类中进行多态化。
我的教练只希望一个对象创建整个程序(在main中),但由于我的前三层类是抽象的。 我不能用它们创建一个物体,即vehicle = new vehicles();
所以我的问题是如何创建一个对象,因为它们是抽象的? 如果您有任何问题可以随意提问,我可能没有解释清楚……
您的类结构将类似于:
abstract class Vehicle { protected abstract int BaseFee { get; } protected abstract int ExtraFee { get; } public int CalculateFee() { return BaseFee + ExtraFee; } } abstract class CommercialVehicle : Vehicle { protected override int BaseFee { return 100; } } class LightDutyTruck : CommercialVehicle { protected override int ExtraFee { return 50; } } class Semi : CommercialVehicle { protected override int ExtraFee { return 150; } } [etc...] abstract class PrivateVehicle : Vehicle { protected override int BaseFee { return 25; } } class Sedan : PrivateVehicle { protected override int ExtraFee { return 15; } }
等等,每个class级。 在Main
方法中,您将根据输入创建实例,但实际变量将声明为Vehicle
类型。 实际计算将根据您创建的实例生效:
Vehicle v; switch(input) { case "semi": v = new Semi(); break; case "truck": v = new LightDutyTruck(); break; ... } int fee = v.CalculateFee();
你似乎有点困惑。 “所有车辆”应该是抽象的。 “商用车”和“私人车辆”不应该是抽象的,除非有这两者的具体子类。
您可能也不会通过“只有一个对象”来理解您的教师的意思,因为这没有意义。
也许你要制作一个代表DMV的对象,但该对象的定义包括其他对象的实例。
class DMV { private List vehicles = new List (); ... }
您的教师可能希望您通过对抽象基类的引用来实例化多个对象:
Vehicle conveyance; conveyance = new PrivateVehcicle(); conveyance.Drive(); conveyance.Stop(); // or whatever ... conveyance = new CommercialVehcicle(); conveyance.Drive(); conveyance.Stop();
即,您有一个单一的对象引用(传输),它根据您实例化的具体类型进行多态操作。
上述就是C#学习教程:c#抽象类分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/1005473.html