我在构造函数超类中创建if语句时遇到问题,因为当我创建一个sub class类型的对象时,my year变量初始化为零。有人可以帮我找出问题吗?
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;
}
答案 0 :(得分:2)
此处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;
}
答案 1 :(得分:0)
您需要将if(year > 1950)
更改为if(y > 1950)
否则条件将永远不会变为真,因为默认情况下year
被初始化为零,因为它是一个实例字段。< / p>