云网站7china,网络公关公司,广州市羊城晚报,百度推广系统营销平台你能做的是#xff1a;public MyClassExtension(MyClass instance) {super(...);new_field some_value;}在创建子类时#xff0c;最好调用超级构造函数(否则默认情况下将调用默认的超级构造函数)。为什么这样#xff1f;因为它限制了重新定义相同初始化所需的次数。例如public MyClassExtension(MyClass instance) {super(...);new_field some_value;}在创建子类时最好调用超级构造函数(否则默认情况下将调用默认的超级构造函数)。为什么这样因为它限制了重新定义相同初始化所需的次数。例如当您想要创建具有默认值的对象时。您只在母类中执行一次并在创建子类时默认调用默认的超级构造函数。您还可以覆盖子类中的默认值具体取决于您定义类的方式。这是一个例子假设你有像这样定义的MyClassclass MyClass {protected Object field1;protected Object field2;protected Object field3;public MyClass(MyClass c) {field1 c.field1; // Remark: this is only the setup offield2 c.field2; // the reference. If you want to create afield3 c.field3; // copy, please do so with a constructor.}public MyClass(Object field1, Object field2, object field3) {this.field1 field1; // Same remark herethis.field2 field2; // (about references).this.field3 field3;}}你在这里看到MyClass定义了2个构造函数一个所谓的复制构造函数它将MyClass对象作为参数构造函数包含所有需要的字段。然后当您想要创建一个以MyClass对象作为参数的子类时您可以这样做class MyClassExtension extends MyClass {private Object newField;public MyClassExtension(MyClass c, Object newField) {super(c);this.newField newField;}}但你也可以这样做class MyClassExtension {private Object newField;public MyClassExtension(MyClass c, Object newField) {super(c.field1, c.field2, c.field3);this.newField newField;}}因此您限制了对MyClass对象参数的访问次数并且子类MyClassExtension构造函数是简洁的。请注意您必须在程序中的某个位置或其他位置提供此代码。您必须为您的编译器定义如何在给定MyClassExtension对象的情况下构建MyClass。要么代码在MyClass要么在MyClass和MyClassExtension。我只是提供了一种减少代码库的方法并且如果要更改代码中的任何内容则限制所需的更改次数。使用此解决方案如果您更改MyClass构造函数MyClassExtension也将受到影响(除非您强制执行其他操作)。另请注意您需要自己定义复制构造函数否则编译器将无法知道您是要进行深层复制还是仅仅引用复制。更多信息请访问http://blog.amitinside.com/Copy-Constructor-in-Java/