所以,我們有一個類,它的一個領域是抽象類。我們想寫一個構造函數,以便不會出現鋸齒;即我們不想引用構造函數獲取的Color對象,而是複製它,並將該副本分配到Color域中。如何構建一個具有抽象類類型字段的對象?
class Shape {
private Color color; /* Color is an abstract class */
public Shape(Color c) {
/* How do we assign a clone
of `c` into `color`? */
}
/* Methods */
...
}
abstract class Color {
private String colorModel;
private float transparency;
/* Methods */
...
}
我們不能用color = c.clone()
因爲編譯器會發出以下錯誤:
- 「類型不匹配:不能從對象轉換爲彩色」
- 「來自Object類型的方法clone()不可見。」
那麼,這個問題的可能解決方案是什麼?
考慮到調用代碼如何與任意Color實現(顯然)一起工作,可能是最好的方法。反過來,拷貝構造函數將是實現Coloneable接口的一種好方法(即:''return new ColorType(this);') – user268396 2011-12-26 02:43:15