Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何隐式和显式调用构造函数?_Java_Oop_Constructor - Fatal编程技术网

Java 如何隐式和显式调用构造函数?

Java 如何隐式和显式调用构造函数?,java,oop,constructor,Java,Oop,Constructor,我有一个类A,写了一个子类B,C。A只有一个参数化的构造函数。C必须调用B的超级构造函数,B必须调用A的超级构造函数。现在我想在对象上用作参数。因此,参数对象必须包含一个C的引用 语言:java 计算A: B类: C类: 现在,当我想调用构造函数时,Eclipse说: Cannot refer to 'this' nor 'super' while explicitly invoking a constructor 如何使用此实例调用超级类构造函数。 请解释此错误并给出解决方案 如何使用此实例

我有一个类A,写了一个子类B,C。A只有一个参数化的构造函数。C必须调用B的超级构造函数,B必须调用A的超级构造函数。现在我想在对象上用作参数。因此,参数对象必须包含一个C的引用

语言:java

计算A:

B类:

C类:

现在,当我想调用构造函数时,Eclipse说:

Cannot refer to 'this' nor 'super' while explicitly invoking a constructor
如何使用此实例调用超级类构造函数。 请解释此错误并给出解决方案

如何使用此实例调用超级类构造函数

你不能

给出解决方案

将superthis更改为supernull

如何隐式调用构造函数


通过使用反射,比如调用类对象。或者使用工厂方法。或者使用新的关键字.< /p>为什么你要标记C++或java EE?我怀疑标签垃圾邮件只是为了增加对你问题的关注。请不要这样做,除非你想引起的注意是负面的。你的程序结构可能会被破坏-一个超级类不应该需要知识或使用它自己的子类。你为什么认为你需要把这个传递给一个超级类?由于C是a的一个子类型,a也通过使用它来拥有它。
public class B extends A {

protected B(C c) {
    super(c);
}
}
Cannot refer to 'this' nor 'super' while explicitly invoking a constructor