java - 如何在父类(super class)构造函数中具有特定条件?

标签 java inheritance interface

我在构造函数父类(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/

相关文章:

postgresql - Postgres 表继承 : move from parent to child and vice versa

Java接口(interface)实现问题

java - 确保对象将实现接口(interface)

调用方法时出现 java.lang.StackOverflowError

C++派生类

swift - 在不同类中使用函数的最佳实践

java - 如何将字段索引为建议类型?

java - 如何获取 Kubernetes 中 POD 中的特定应用程序(在多个正在运行的应用程序中)提供的特定请求?

java - jsf 中的 SelectBooleanCheckbox

java - 如何从 Spring Boot 重定向/转发 Angular 页面?