博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
老王学java之一个让我困惑的问题
阅读量:5357 次
发布时间:2019-06-15

本文共 2552 字,大约阅读时间需要 8 分钟。

首先上代码:

import java.util.*;interface Pet{    // 定义宠物接口    public String getName() ;    public String getColor() ;    public int getAge() ;}class Cat implements Pet{    // 猫是宠物,实现接口    private String name ;    // 宠物名字    private String color ;    // 宠物颜色    private int age ;        // 宠物年龄    public Cat(String name,String color,int age){        this.setName(name) ;        this.setColor(color) ;        this.setAge(age) ;    }    public void setName(String name){        this.name = name ;    }    public void setColor(String color){        this.color = color;    }    public void setAge(int age){        this.age = age ;    }    public String getName(){        return this.name ;    }    public String getColor(){        return this.color ;    }    public int getAge(){        return this.age ;    }};class Dog implements Pet{    // 狗是宠物,实现接口    private String name ;    // 宠物名字    private String color ;    // 宠物颜色    private int age ;        // 宠物年龄    public Dog(String name,String color,int age){        this.setName(name) ;        this.setColor(color) ;        this.setAge(age) ;    }    public void setName(String name){        this.name = name ;    }    public void setColor(String color){        this.color = color;    }    public void setAge(int age){        this.age = age ;    }    public String getName(){        return this.name ;    }    public String getColor(){        return this.color ;    }    public int getAge(){        return this.age ;    }};class PetShop{    // 宠物商店    private Pet[] pets ;    // 保存一组宠物    private int foot ;    public PetShop(int len){        if(len>0){            this.pets = new Pet[len] ;    // 开辟数组大小        }else{            this.pets = new Pet[1] ;    // 至少开辟一个空间        }    }    public boolean add(Pet pet){    // 增加的是一个宠物        if(this.foot
search(String keyWord){ ArrayList
pet=new ArrayList
(); for(int i=0;i
pet){ for(int i=0;i

问题出在后面搜索结果的遍历上面:

这种方法正确,可以取得结果

public static void print(ArrayList
pet){ for(int i=0;i

而是用迭代器的这种方法却不管用

public static void print(ArrayList
pet){ Iterator it1=pet.iterator(); while(it1.hasNext()) { System.out.println(it1.next().getName()); } }

报错,表示找不到getName(),但是直接输出it1.next()的结果和上面直接输出p[i]的结果是一样的,说明下面一种方法也是可以取得对象的地址的,至于为什么找不到getName()

方法,则就不明白了。我的想法是,It1已经转化成迭代器了,迭代器只能看到对象,看不到里面的东西。

因为it1.next()获得的是迭代器里面的内容。

转载于:https://www.cnblogs.com/wanglei-134/p/3188807.html

你可能感兴趣的文章
MySQLdb & pymsql
查看>>
zju 2744 回文字符 hdu 1544
查看>>
【luogu P2298 Mzc和男家丁的游戏】 题解
查看>>
前端笔记-bom
查看>>
上海淮海中路上苹果旗舰店门口欲砸一台IMAC电脑维权
查看>>
Google透露Android Market恶意程序扫描服务
查看>>
给mysql数据库字段值拼接前缀或后缀。 concat()函数
查看>>
迷宫问题
查看>>
【FZSZ2017暑假提高组Day9】猜数游戏(number)
查看>>
泛型子类_属性类型_重写方法类型
查看>>
练习10-1 使用递归函数计算1到n之和(10 分
查看>>
Oracle MySQL yaSSL 不明细节缓冲区溢出漏洞2
查看>>
Code Snippet
查看>>
zoj 1232 Adventure of Super Mario
查看>>
组合数学 UVa 11538 Chess Queen
查看>>
oracle job
查看>>
Redis常用命令
查看>>
[转载]电脑小绝技
查看>>
windos系统定时执行批处理文件(bat文件)
查看>>
thinkphp如何实现伪静态
查看>>