Csharp/C#教程:c#抽象类分享


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

(0)
上一篇 2021年12月29日
下一篇 2021年12月29日

精彩推荐