Java中内部类接口实例化的问题:

[复制链接]
查看11 | 回复2 | 2011-4-13 22:15:37 | 显示全部楼层 |阅读模式
正确代码如下:
interface Animal
{
void eat();
void sleep();
}
class Zoo
{
private class Tiger implements Animal
{
public void eat()
{

System.out.println("tiger eat");
}
public void sleep()
{

System.out.println("tiger sleep");
}
}
Animal getAnimal()
//①
{
return new Tiger();
}
}
class Test
{
public static void main(String[] args)
{
Zoo z=new Zoo();
Animal an=z.getAnimal();
//②
an.eat();
an.sleep();
}
}
上面代码运行是能正确输出的,但是小生有一疑问:
代码中注释处的①和②,为什么将Animal 换成 Tiger 就出错: 找不到Tiger符号?
为什么①处的返回类型一定要是 Animal 类型 而不能是Tiger类型的?
求详细一点能明白的答案(>_<)~自学中...

回复

使用道具 举报

千问 | 2011-4-13 22:15:37 | 显示全部楼层
继承关系, 如果你用Tiger接收的话 那你必须的强制转换,因为父类转子类必须强制转换
回复

使用道具 举报

千问 | 2011-4-13 22:15:37 | 显示全部楼层
代码中注释处的①和②,为什么将Animal 换成 Tiger 就出错: 找不到Tiger符号?为什么①处的返回类型一定要是 Animal 类型 而不能是Tiger类型的?①处的返回类型可以是:Tiger。这样的话第一个问题就不存在了。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行