对象让我们假设有:简单的方法来创建一个从基类
class A {
}
也
class B extends A {
B(A object) {
this = object; //this is not possible.
}
}
我们知道,我们不能设置在爪哇(本)的任何值的关键字。有没有简单的方法来创建与A对象具有相同字段值的B对象?
对象让我们假设有:简单的方法来创建一个从基类
class A {
}
也
class B extends A {
B(A object) {
this = object; //this is not possible.
}
}
我们知道,我们不能设置在爪哇(本)的任何值的关键字。有没有简单的方法来创建与A对象具有相同字段值的B对象?
最简单的方法是逐个复制所有字段。没有更简单的方法。你可以写一个工具为你生成这段代码。总的来说,这在Java中可以避免(可能是因为它很痛苦且容易出错),而且如果没有更简单的解决方案来解决问题,通常会使用委派。即通常有替代方案。
嗯,我明白了。顺便说一下,Java是否具有:像C#那样的新A(){this.f = f,...}语法呢? – user14570
@ user14570,这个系列演示了您必须学习Java的基础知识。如果你不会花时间去学习基础知识,不要急于完成某些事情。 –
这不能作为变量这是最后一个。所以,你可以做这样的事情:
public class A {
private String hello;
private String something;
public A(String hello, String something){
this.hello = hello;
this.something = something;
}
public String getHello() {
return hello;
}
public void setHello(String hello) {
this.hello = hello;
}
public String getSomething() {
return something;
}
public void setSomething(String something) {
this.something = something;
}
}
然后,您可以使用A类B中,如下:
public class B extends A{
public B(A object) {
super(object.getHello(),object.getSomething());
}
}
你的意思是如何创建一个拷贝构造函数的最简单的方法? –
yeap。这是非常荒谬的问题吗?我得到了负面的点 – user14570
我不认为这是荒谬的,但看起来你甚至没有尝试过。我只是简单地在基类和子类中调用'super(a);'创建拷贝构造函数。现在,如果你天真地问*我应该手动生成几个字段的副本吗?答案是:确保它通过手动或代码生成工具完成,但代码必须在那里。 –