此问题是由打字错误或无法再复制的问题引起的。虽然这里可能有类似的问题,但这一问题的解决方式不太可能对未来的读者有所帮助。
下面是父类(圆圈2)。
public class Circle2
{
private int x;
private int y;
private int rad;
private String name;
public Circle2(int p_x, int p_y, int r, String n)
{
// initialize instance variables
x = p_x;
y = p_y;
rad = r;
name = n;
}
}
子类在下面(Cylinder2),我得到的错误在Super()构造函数上。
public class Cylinder2 extends Circle2
{
private int height;
private String name;
public Cylinder2(int h, String n)
{
super(x, y, rad); //Error here
height = h;
name = n;
}
}
Super()构造函数上的确切错误:“必需:int, int, int,java.lang.找到字符串:int, int, int”
下面是我对这两门课的尝试。这不是正确的方法吗?
Circle2 three = new Circle2(2,4,2,"Circle2");
Cylinder2 four = new Cylinder2(8, "Cylinder2");
如果有任何重要的信息可能需要,只要问一下,我就会编辑这篇文章。
关键是错误“必需:int,int,int,java.lang.String已找到:int,int,int”
。用super(x,y,rad)调用super构造函数时
只传递3个参数,而不是预期的4个参数。
问题内容: 我有一些简单的Java代码,其结构与此类似: 我将有很多的子类,每个子类以自己的方式(模板方法模式)实现方法。 这很好用,但是我不喜欢子类中有多余的构造函数。输入更多,难以维护。如果要更改构造函数的方法签名,则必须更改所有子类。 当我从子类中删除构造函数时,出现此编译时错误: 我想做的事可能吗? 问题答案: 你会收到此错误,因为没有构造函数的类具有默认构造函数,该构造函数没有参数,并且
问题内容: 我是Java的新手,只是学习OOP概念。请检查我的代码。我收到以下错误。- 隐式超级构造函数未定义。 问题答案: 您收到此错误,因为BoxSuper没有no-arg构造函数。在BoxSub中的构造函数调用期间,如果未定义超级构造函数调用,Java会尝试自动调用no- arg super()构造函数。 在BoxSuper中定义超级构造函数调用,如下所示: 或在BoxSuper中定义无参数
我有以下2个类 然后运行 或 始终给予 为什么会出现这种情况?乍一看,在这两种场景中,我都假设只调用构造函数,因此唯一的输出是 但这显然是错误的。
问题内容: 在上面的代码中,我有一个简单的类和一个类级别的实例,也有一个具有相同名称的本地实例。运行上面的代码时,出现以下异常: 问题答案: 您的main方法创建一个实例(),该实例导致实例变量()的初始化,并创建另一个实例,依此类推… 您有无限的构造函数调用链,从而导致。 在上面的代码中,我有一个简单的类和一个类级别的实例 您没有课程级别的实例。您有一个实例级别的实例。如果要一个类级别的实例,请
问题内容: Java为什么不支持C ++中的复制构造函数? 问题答案: Java。只是没有像在C ++中那样隐式地调用它们,我怀疑这是您的真正问题。 首先,复制构造函数无非是: 现在,C ++将使用以下语句隐式调用复制构造函数: 在这种情况下,克隆/复制在Java中根本没有意义,因为所有b1和b2都是引用,而不是像C 中那样的值对象。在C 中,该语句复制对象的状态。在Java中,它只是复制 引用
问题内容: 根据Java语言规范,无法将构造函数标记为已同步,因为其他线程在创建该对象的线程完成之前无法看到正在创建的对象。这似乎有些奇怪,因为在构造对象时,我确实可以让另一个线程查看该对象: 我知道这是一个非常人为的示例,但从理论上讲,似乎有人可以提出一个更现实的案例,在该案例中,标记构造函数为同步状态是合法的,以防止此类线程的竞争。 我的问题是:Java是否有理由特别禁止在构造函数上使用syn