当前位置:编程学习 > JAVA >>

前学后忘,问大家一个问题

由于还要做别的工作,只能有时间了才学习学习,前学后忘了,
下面这段程序中Enumeration en = v.elements();这句的知识点不太明白了,谁帮我讲解一下,非常感谢
Enumeration 是个接口,为什么直接像赋值一样呢?多态的应用不是要加new 对象的吗?

import java.util.Enumeration;
import java.util.Vector;


public class VectorDemo {

/**
 * @param args
 */
public static void main(String[] args) {

Vector v = new Vector();
v.addElement("abc1");
v.addElement("abc2");
v.addElement("abc3");
v.addElement("abc4");

Enumeration en = v.elements();
while(en.hasMoreElements()){
System.out.println(en.nextElement());
       }




} --------------------编程问答-------------------- 接口是不能new的,但是可以申明引用啊。兄弟,你这java还没入门啊。

 v.elements();这个方法会返回一个Enumeration类的子类对象的引用。然后把这个引用赋值给en --------------------编程问答-------------------- http://zhidao.baidu.com/question/273237933.html
参照下 --------------------编程问答-------------------- 只是个存放引用的变量而已。 --------------------编程问答--------------------
引用 1 楼 rumlee 的回复:
接口是不能new的,但是可以申明引用啊。兄弟,你这java还没入门啊。

 v.elements();这个方法会返回一个Enumeration类的子类对象的引用。然后把这个引用赋值给en


import java.util.ArrayList;
import java.util.Collection;


public class CollectionDemo {

/**
 * @param args
 */
public static void main(String[] args) {
Collection coll = new ArrayList();
Collection c1 = new ArrayList();
Collection c2 = new ArrayList();
//show(coll);
show(c1,c2);


}

接口是不能new的,那么这个Collection coll = new ArrayList();中Collection 是接口,为什么可以用new?是当类多态的应用吗?见笑了!!!! --------------------编程问答--------------------
引用
那么这个Collection coll = new ArrayList();中Collection 是接口,为什么可以用new?

Collection是接口,ArrayList是实现了Collection的类,所以ArrayList是可以实例化的,也就是可以new的,但是接口不可以,Collection coll = new ArrayList();这里面存在一个向上向下转型的问题,一个父类(或接口类型)的引用可以指向它的子类(或实现类),但在通过这个引用调用方法时,会自动按照子类对象去处理,可能不太严谨,大概就是这个意思,还请大神们指正! --------------------编程问答-------------------- 楼主,我觉得这里有些概念混淆了。
1.“=”这个操作符是赋值操作符。对于对象使用这个操作符就是把引用赋给左边的变量。
2. new 操作符是创建一个新的对象的实例。

在你的问题中,elements()方法返回 Enumeration 类型的引用。然后用‘=’ 赋值给左边对象。
所以和new没有关系。

还有一点,实现接口的子类和接口是同种类型的。所以用"="操作符是可以的。
不知道这样解释,楼主明白否?
--------------------编程问答-------------------- 还有一点,实现接口的子类和接口是同种类型的。所以用"="操作符是可以的1 --------------------编程问答-------------------- 第一个疑问:
比如“设备”这个概念,比“电脑”、“电话”之类的还要抽象,我们可以把“设备”定义为一个接口interface Equipment,“电脑”、“电话”定义为class Computer和class Phone。
比如诺基亚生产了一个手机对象“诺基亚手机”,我们可以说它是一个Phone,也可以说它是一个“设备”Equipment。

第二个疑问:
我们可以说,诺基亚厂商为我们new了一个Phone对象p1。然后呢,设备厂的人把p1对象拿过来,说:嗯,这个“设备”不错!于是,在设备厂,这个p1的名字用代号equipment1来代替了(注意:此时,诺基亚厂商并没有为设备厂单独new一个Phone)。

希望能帮助LZ理解~ --------------------编程问答--------------------
引用 1 楼 rumlee 的回复:
接口是不能new的,但是可以申明引用啊。兄弟,你这java还没入门啊。

 v.elements();这个方法会返回一个Enumeration类的子类对象的引用。然后把这个引用赋值给en

就是这个样子,别想太复杂了... --------------------编程问答-------------------- new 接口或者抽象类(){

      重写方法
}
这个东西楼主记得嘛  都是类似的东西 --------------------编程问答-------------------- Enumeration instanceof  v.elements()返回的类型,如果能匹配肯定是可以赋值的哈
补充:Java ,  Java SE
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,