Java问题

[复制链接]
查看11 | 回复5 | 2012-11-6 10:20:04 | 显示全部楼层 |阅读模式
Fruit ---------------->
Apple大致是这样的,因为你的Fruit fruit 是局部变量,所以编译器认为,你需要的只是一个Fruit .所以就只能调用 fruit变量的方法。 如果要 调用 Apple 的方法,则只能判断类型再强转了使用了。if( fruit instanceof Apple){// 这就判断fruit是不是Apple的实例了。真正运行的时候指向的对象 Apple a2 = (Apple)fruit; a2.xxx();}// 至于为什么会这样,你考虑一下,假若,还没有Apple类,只有 Fruit类的时候,这可能的吧。那么,我有一个方法,接收一个Fruit 类...
回复

使用道具 举报

千问 | 2012-11-6 10:20:04 | 显示全部楼层
可以这样理解,现在Pear, Orange也继承了Fruit。Fruit fruit = new Apple();fruit的类型是Fruit,它是不知道是Apple/Pear/Orange哪一个,所以fruit只能调用Fruit的方法。如果需要用Apple的方法,可以这样:Apple apple = (Apple)fruit; ...
回复

使用道具 举报

千问 | 2012-11-6 10:20:04 | 显示全部楼层
fruit只是使用子类的构造函数来构造本身。就父类fuit而言是调用不到的子类的新增对象的,可以考虑强转Fruit fruit = new Apple();Apple test= (Apple)fruit;...
回复

使用道具 举报

千问 | 2012-11-6 10:20:04 | 显示全部楼层
继承没学好吧,水果是父类,苹果是子类,子类可以调用或拥有父类所有公用的方法,但是似有的不可以被继承,同时继承是不可逆的,父类不能继承子类,你就这么想吧,一个人在没有儿子的时候能让他儿子去买酱油吗,继承不难但是不能滥用,fruit是Apple类的一个实例,你现在再想想看看还对吗,我举个例子,人类-人...
回复

使用道具 举报

千问 | 2012-11-6 10:20:04 | 显示全部楼层
你new 了男人转为人,这人就是男人的一个实例,人不能调用男人特有的行为...
回复

使用道具 举报

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

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行