我在构造函数父类(super class)中创建 if 语句时遇到问题,因为当我创建子类类型的对象时,我的年份变量初始化为零。有人可以帮我找出问题所在吗?
public abstract class Ship implements Floatable {
private String name;
private int year;
public Ship(String n, int y) {
if(year > 1950)
year = y;
else
year = 0;
name = n;
}
//子类代码
public class CruiseShip extends Ship {
private int maxPsg; //max number of passengers
public CruiseShip(String name, int year, int max) {
super(name, year);
maxPsg = max;
}
最佳答案
此处 if(year > 1950)
, year
只能值为 0
,因为它声明为:
private int year; // 0 value by default
而你却从未珍惜过它。
你想写的可能是:
public Ship(String n, int y) {
if(n > 1950)
year = y;
else
year = 0;
name = n;
}
但是由于 int
字段默认初始化为 0
,因此您可以简化为:
public Ship(String n, int y) {
if(n > 1950)
year = y;
name = n;
}
关于java - 如何在父类(super class)构造函数中具有特定条件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47228958/