Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/324.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 构造函数if语句_Java - Fatal编程技术网

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,“汽车”)这里的基本思想是将最少的逻辑放在构造函数中,因为这是违反约定的。是的,您应该将预定义的值传递给构造函数。这只是我吗?在构造函数中避免逻辑的约定对我来说是新的。我有时会使用包含逻辑的构造函数调用方法。在这种情况下,它会有什么问题?