今天凌晨coding的时候发现一个很有趣的现象。“Object类是Java体系的单根父节点,所有Java类都从Object类继承。”这句话是大部分green hand都知道的Java金句,毋庸置疑。那如果我问你接口和Object类的关系呢?答案是“没有关系”。请看下面的代码:
1Map map = new HashMap();
2map.clone();
Map是一个接口,HashMap是一个类。clone()方法在Object类中定义,因此我下意识认为第二行可以这么写。结果编译器报错:clone()方法未定义。这个错误让我很郁闷,看了半天doc才发祥原来Map是一个接口,而接口和Object类没有任何关系,所以Map也就没有继承clone()。于是把代码改成下面的样子:
1HashMap map = new HashMap();
2map.clone();
这样就可以了。
兄弟,你这样是测试不出来的。java是绝对多态的。
Map map = new HashMap();
map.clone()调用相当于HashMap.clone()也就是说调用的是从HashMap中的clone方法。但是你没有看清楚object的文档,class要显式implements Clonable接口才可以调用clone方法的
posted on 2007-08-16 14:50
冬天出走的猪 阅读(770)
评论(0) 编辑 收藏 所属分类:
j2se