明明在书上本本都说接口内不能有实现具体方法的函数,只能存在abstract虚拟类
那么我看到很多例子上继承了COLLECTION、MAP等接口后的类,都可以实现其中的方法呢?如:
Collection A1=New Collection();
A1.iterator();
小弟百思不得其解
那么我看到很多例子上继承了COLLECTION、MAP等接口后的类,都可以实现其中的方法呢?如:
Collection A1=New Collection();
A1.iterator();
小弟百思不得其解
解决方案 »
- 我做的一个表格布局,不知道怎么给表格中输入数据并且保存
- spring与JPa集成,出现NoSuchBeanDefinitionException。大家请指教。
- 某大型互联网公司面试题(世博相关,有点意思)
- sql 语句 从 oracle 数据库中取值
- 急救:ClassCastException--运行时类型和判断是否是某种类实例之间的关系不是一致的么?
- 请教各路前辈~~~~~~~~~~~~
- 两个应用程序怎样交换对象?
- 100分求prepareStatement问题!!
- JFrame.pack();的作用是什么?
- 调查:有多少人在使用JBoss + JBuilder6做程序?
- 请教finally语句
- 初学 Java applet,请教几个有关 applet 的问题
System.out.println(只) ;
Collection A1=New Collection();
会编译报错:can't instantiate the type Collection,since it is not a concrete class.
你这种写法本来就是错误的.
至于类实现了某个接口,当然它就可以使用接口的方法了
例:
Collection a = new ArrayList();
a.iterator();
a已经是一个具体的类ArrayList,而不是Collection.
package java.util; public interface Collection {
int size();
boolean isEmpty();
Iterator iterator();
boolean add(Object o);
boolean remove(Object o);
...
}
接口中,只有函数定义,没有具体实现,这不过是一纸契约。2. 其次,当你明白interface本身不过是一纸契约,并为所有继承自该接口的class提供一份行动向导(约束,包括函数名称、参数类型、参数数量、返回类型,但绝非具体实现)
重要的是,由于interface && abstract class只是契约,所以不可能产生任何实际对象,那么
Collection c = new Collection(); // That's wrong
绝对不可能出现interface or abstract class的实例。3. 再次,既然interface && abstract class是契约,那么接口继承or实现继承自该interface的具体class自然必须遵守这纸契约,也就是说
如果你的类继承自某个interface or abstract class,你必须实现其中所有定义的函数申明。
比如说 LinkedList class is inherit Collection interface,所以之前接口中定义的所有函数都必须在这个具体类中得以实现。
public class LinkedList implements Collection {
public int size() {
// do something...
}
boolean isEmpty() {
// do something...
}
Iterator iterator() {
// do something...
}
boolean add(Object o) {
// do something...
}
boolean remove(Object o) {
// do something...
} ...
}
并且通过多态特性,你可以在实现出该类的某个对象时,将引用指向Collection interface,例如:
Collection instance = new LinkedList(); // That's right至于多态性存在的意义,实现的机制,带来的好处不是三两句话能说得清楚的,楼主只需多多看书,多多编写代码,便会很快发现其中的奥秘,希望以上的解释还算通俗易懂,否则就误人子弟了,呵呵...@.@||~
这些方法在ArryList中实现了