Java设置实例的超级实例

我可能只是无法谷歌正确的单词,但我找不到以下问题的答案。

是否可以显式设置新类实例的超类。 例如,我有一个SuperClazz实例,想要创建一个新的SuperClazz实例,它扩展了SuperClazz 。 我可以做这样的事情(代码就是我想要做的,它不能编译,也不正确):

  class Clazz extends SuperClazz{ Clazz(SuperClazz superInstance){ this.super = superInstance; } } 

超类总是隐式实例化,所以你不能这样做 – 在扩展类中“植入”超类。 你可能想要的是一个复制构造函数。

你正在混合inheritance和授权。 当一个对象调用时

 super.doThis(); 

它不会在另一个具有对象超类类型的对象上调用doThis 。 它称之为自己。 thissuper是一回事。 super只允许访问超类中定义的方法的版本,并在子类中重写。 因此,更改超级实例没有意义:没有超级实例。

我认为你在使用的含义或术语上有一些误解。

实例(或对象)是您在运行时使用new Clazz()创建的。 你不能改变它(除非你使用字节码修改技巧)。 你真正想要的是创建2个类:基类及其子类。 这是最简单的例子。

 class SuperClazz { } class Clazz extends SuperClazz { } 

如果你想从子类的构造函数调用exlplitly超类的构造函数,请使用super() :class Clazz扩展SuperClazz {public Clazz(){super(); }}