2015-02-11 26 views
0

我有A类和写一个子类B,C.A仅具有一个构造,其是参数化。 C必须调用B的超级构造函数,B必须调用A的超级构造函数。现在我想用对象作为参数。因此参数对象具有保持℃的参考我怎样才能隐式和明确地调用构造函数?

语言:JAVA

CALSS A:B

public class A { 

private C c; 


protected A(C c) { 
    this.c = c; 
} 
} 

类别:

public class B extends A { 

protected B(C c) { 
    super(c); 
} 
} 

C类:

enter image description here

现在,当我想调用构造函数一样,Eclipse的说:

Cannot refer to 'this' nor 'super' while explicitly invoking a constructor 

我如何可以调用父类的构造函数与 “本” 的实例。 请好好解释这个错误并给出解决方法。

+1

你为什么标记C++或Java-EE?我怀疑标签垃圾邮件只是为了增加对你的问题的关注。请不要这样做,除非你想吸引的注意力是负面的。 – 2015-02-11 03:07:38

+3

你的程序结构可能被打破 - 一个超类不应该要求自己的子类的知识或使用。 – 2015-02-11 03:11:45

+1

你为什么认为你需要将'this'传递给'A'?由于'C'是'A'的子类型,'A'已经拥有它(也使用'this')。 – Radiodef 2015-02-11 03:13:33

回答

0

我如何可以调用父类的构造函数与“本”的实例。

你不行。

给予解决这一点。

更改super(this)super(null)

我怎样才能调用构造函数隐含

通过使用反射,像类对象上调用newInstance。或者使用工厂方法。或使用new关键字。

相关问题