java - 子类的参数可以比它的子类少吗?

标签 java inheritance constructor subclass superclass

我目前的任务是用 Java 编辑小行星游戏的代码。主类已经完成,但是我必须完成主类控制的游戏中交互的对象的类。在游戏的API中,父类(super class)SpaceObject的构造函数是这样写的:

public SpaceObject(double xPos, double yPos, double xVel, double yVel, double radius){
    setXPosition(xPos);
    setYPosition(yPos);
    setXVelocity(xVel);
    setYVelocity(yVel);
    setRadius(radius);
}

其子类 Comet 概述为:

Comet(double xPos, double yPos, double xVel, double yVel, double radius){
  super(xPos, yPos, xVel, yVel, radius);
}

最后,问题子类 LargeComet 概述为:

LargeComet(double xPos, double yPos, double xVel, double yVel){
  super(xPos, yPos, xVel, yVel);
}

LargeComet 的半径应为 40(该 int 的静态变量位于父类(super class) SpaceObject 中)。

我似乎收到一个错误,但参数不匹配。我不能在子类 LargeComet 的构造函数中拥有 5 个参数值,因为这样我会在使用 4 个参数引用它的主类中收到错误(并且我不应该更改那里的主类代码)。我是否忘记了关于显式调用父类(super class)构造函数的一些事情?

最佳答案

您需要使用 super() 所需的参数(其中 5 个)来调用。如果一个是静态的,则为它提供静态值而不是参数。对于父类接受 3 个参数的类,它看起来像这样。

MyClass(int arg1, int arg2)
{
  super(arg1,arg2,5);
}

关于java - 子类的参数可以比它的子类少吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16159912/

相关文章:

java - 如何使用 Iterator 类从 List 中删除重复元素?

java - 缩放 Graphics2D 对象会移动它

java - Neo4j 中 GraphDatabaseServer 和 BOLT 的区别

c++ - C++ 标准是否允许非模板类的模板构造函数?

c# - 为什么我不能调用基类构造函数?

Java:将 Spring Autowired 库与 Guice 程序结合使用

objective-c - 如何使所有 Core Data 对象继承 self 的类而不是 NSManagedObject?

c# - 从基类对象列表中识别派生类型

inheritance - Rust 中的方法覆盖替代

javascript - Javascript constructor 属性的意义是什么?