Java 构造函数if语句
我试图创建一个类Java 构造函数if语句,java,Java,我试图创建一个类车辆和该类的构造函数。该类别以发动机容量、制造年份和车辆类型为特征(只能是“汽车”或“摩托车”)。最后一点让我不舒服的是我应该如何实现它。用户将输入c(汽车)或m(摩托车)。我的问题是,实现这一点的最佳方式是什么 我是否应该在构造函数中做一个if语句(例如,如果传递的车辆类型参数为'c',则为m做一个字符串'Car'或'Motorcycle' 或 在publicstaticvoidmain方法中执行类似的操作,在这里我将创建字符串Car或字符串Motorcycle(取决于输入),
车辆和该类的构造函数。该类别以发动机容量、制造年份和车辆类型为特征(只能是“汽车”或“摩托车”)。最后一点让我不舒服的是我应该如何实现它。用户将输入c
(汽车)或m
(摩托车)。我的问题是,实现这一点的最佳方式是什么
我是否应该在构造函数中做一个if
语句(例如,如果传递的车辆类型参数为'c',则为m做一个字符串'Car'或'Motorcycle'
或
在publicstaticvoidmain
方法中执行类似的操作,在这里我将创建字符串Car
或字符串Motorcycle
(取决于输入),并将其传递给构造函数。通常的做法是创建抽象类Vehicle,然后使用类Car和Motorcycle对其进行扩展
abstract class Vehicle
{
//Common logic here
}
class Car extends Vehicle
{
//Car-specific stuff here
}
class Motorcycle extends Vehicle
{
}
您现在应该在main方法中创建相应的实例,稍后您可以使用它来创建特定于类的行为通常的做法是创建抽象类Vehicle,然后使用类Car和Motorcycle对其进行扩展
abstract class Vehicle
{
//Common logic here
}
class Car extends Vehicle
{
//Car-specific stuff here
}
class Motorcycle extends Vehicle
{
}
您现在应该在main方法中创建相应的实例,稍后您可以使用来创建特定于类的行为理想情况下,您不应该将逻辑放在构造函数中,因为构造函数用于初始化目的。因此,通过这种方式,您应该将if条件放在main方法中,然后将最终值传递给构造函数。理想情况下,您不应该将逻辑放在构造函数中,因为构造函数用于初始化目的。这样,您应该将if条件放在main方法中,然后将最终值传递给构造函数。枚举?这听起来像是一个非常典型的枚举应用程序。在Java中没有那么高级,这是初学者的课程,我非常确定我需要一个新手解决方案。嗯,我认为枚举可以很简单。:-)我明白了,当然,如果你还没有学会枚举,你就不应该使用它们。在这种情况下,我想我应该将字符('c'或'm')存储在车辆
对象中。如果您想稍微高级一点,您可以在getter和/或toString方法中放入If语句,这样您仍然可以打印出“Car”或“Motorcycle”?这听起来像是一个非常典型的枚举应用程序。在Java中没有那么高级,这是初学者的课程,我非常确定我需要一个新手解决方案。嗯,我认为枚举可以很简单。:-)我明白了,当然,如果你还没有学会枚举,你就不应该使用它们。在这种情况下,我想我应该将字符('c'或'm')存储在车辆
对象中。如果你想稍微高级一点,你可以在getter和/或toString方法中放一个If语句,这样你仍然可以打印出“Car”或“Motorcycle”。整个技巧不是生成子类。我只是好奇传递字符串问题的最佳实践方法是什么。汽车和摩托车仍然是同一个对象,唯一的区别是其中一个将有一个字符串
,表示汽车,另一个是“摩托车”。如果是这样,我建议真正使用枚举-如果你不需要任何内部逻辑,只需要一个车辆类型的标志,枚举就是正确的解决方案。哦,我还没有找到枚举。我是一个新手,刚刚开始,但我相信enum解决方案稍后会派上用场。谢谢:)我同意第一条评论,如果我理解正确的话,子类化对于需求来说是过分的。整个技巧不是生成子类。我只是好奇传递字符串问题的最佳实践方法是什么。汽车和摩托车仍然是同一个对象,唯一的区别是其中一个将有一个字符串
,表示汽车,另一个是“摩托车”。如果是这样,我建议真正使用枚举-如果你不需要任何内部逻辑,只需要一个车辆类型的标志,枚举就是正确的解决方案。哦,我还没有找到枚举。我是一个新手,刚刚开始,但我相信enum解决方案稍后会派上用场。谢谢:)我同意第一条评论,如果我理解正确的话,子类化对于需求来说是过分的。好的,所以基本上,我应该已经将预定义的值传递给构造函数,而不是在构造函数内部。例如,车辆v=新车(22001976,“汽车”)代码>这里的基本思想是将最少的逻辑放在构造函数中,因为这是违反约定的。是的,您应该将预定义的值传递给构造函数。这只是我吗?在构造函数中避免逻辑的约定对我来说是新的。我有时会使用包含逻辑的构造函数调用方法。在这种情况下,它会有什么问题?好的,基本上,我应该已经将预定义的值传递给构造函数,而不是在构造函数内部。例如,车辆v=新车(22001976,“汽车”)代码>这里的基本思想是将最少的逻辑放在构造函数中,因为这是违反约定的。是的,您应该将预定义的值传递给构造函数。这只是我吗?在构造函数中避免逻辑的约定对我来说是新的。我有时会使用包含逻辑的构造函数调用方法。在这种情况下,它会有什么问题?