對象讓我們假設有:簡單的方法來創建一個從基類
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);'創建拷貝構造函數。現在,如果你天真地問*我應該手動生成幾個字段的副本嗎?答案是:確保它通過手動或代碼生成工具完成,但代碼必須在那裏。 –