我刚才注意到java.util.Observable是一个具体的类.由于Observable的目的是扩展,这对我来说似乎很奇怪.有没有理由以这种方式实施?
我发现这篇文章说的是
observable是一个具体的类,因此必须事先确定从中派生的类,因为Java只允许单继承.
但这并没有真正向我解释.实际上,如果Observable是抽象的,那么用户将被迫确定从中派生的类.
如果我有:
class foo implements Cloneable
Run Code Online (Sandbox Code Playgroud)
然后做:
bar = new foo();
bar.clone();
Run Code Online (Sandbox Code Playgroud)
我得到一个浅拷贝而不需要编写任何bar.clone()代码,就像我通常在实现接口时需要做的那样.
我的理解是接口的函数必须由实现它的类填充,并且Object.clone()没有实现(根据文档,"类对象本身不实现接口Cloneable")
那么我的浅层克隆来自哪里?bar.clone()如果Object.clone()没有实现,那么实现的代码在哪里?我糊涂了.