我已经用 C#(以及其他一些语言)编程有一段时间了,但最近我决定开始编写自定义类来更好地了解面向对象编程。为此,我从 Vehicle 的基类和一些派生类开始着手处理继承。
我在这里要做的是在 Vehicle 的基类中设置一些默认值和逻辑,同时让派生类实现一些确定差异的信息。例如,当我在基类中设置 _wheelsNumber、_motorType 和 _horsePower 变量和逻辑时,我会让每个类(Car、Truck、Semi、Moped 等)设置其 _wheelsNumber 并触发逻辑流来计算剩下的属性。
但是,我不确定我是否以正确的方式构建了我的课程来实现这些目标。我不清楚我是否使用我的构造函数和我的 get/set 访问器远程做正确的事情(因为我不希望用户选择汽车有多少个轮子之类的东西,我没有声明的集合访问器)。我想我注意到的一件事是,用户必须在电机类型和马力之前询问程序的车轮数量。我认为这是因为它们不是在构造函数中计算的,但我不确定。
任何人的清晰度将不胜感激。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace VehicleClasses
{
abstract public class Vehicle
{
protected const int smallMotor = 1;
protected const int mediumMotor = 3;
protected const int largeMotor = 5;
protected const int largerMotor = 7;
protected const int hugeMotor = 9;
protected const int wrongMotor = 9001;
public Vehicle()
{
_horsePower = (_motorType * _motorType) * 8;
}
protected int _wheelsNumber;
public int wheelsNumber
{
get
{
return _wheelsNumber;
}
}
protected int _motorType;
public int motorType
{
get
{
if (_wheelsNumber < 4)
{
_motorType = smallMotor;
}
else if (_wheelsNumber >= 4 && wheelsNumber <= 6)
{
_motorType = mediumMotor;
}
else if (_wheelsNumber > 6 && wheelsNumber < 10)
{
_motorType = largeMotor;
}
else if (_wheelsNumber >= 10 && wheelsNumber < 18)
{
_motorType = largerMotor;
}
else if (_wheelsNumber >= 18)
{
_motorType = hugeMotor;
}
else
{
_motorType = wrongMotor;
}
return _motorType;
}
}
protected int _horsePower;
public int horsePower
{
get
{
return _horsePower;
}
}
}
}