所以,我们有一个类,它的一个领域是抽象类。我们想写一个构造函数,以便不会出现锯齿;即我们不想引用构造函数获取的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