A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 1961993790 中级黑马   /  2013-10-24 07:45  /  1408 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 1961993790 于 2013-10-25 15:36 编辑

abstract class Animal
{
abstract void eat();
}
class Dog extends Animal
{
void eat()
{
System.out.println("啃骨头");
}
void lookHome()
{
System.out.println("看家");
}
}
class Cat extends Animal
{
void eat()
{
System.out.println("吃鱼");
}
void catchMouse()
{
System.out.println("抓老鼠");
}
}
class Pig extends Animal
{
void eat()
{
System.out.println("饲料");
}
void gongDi()
{
System.out.println("拱地");
}
}
class DuoTaiDemo
{
public static void main(String[] args)
{
   method(new  Dog());
}
public static void method(Animal a){
   a.eat();
if(a instanceof Cat)//instanceof:用于判断对象的具体类型。
{
Cat c = (Cat)a;
c.catchMouse();
}
else if(a instanceof Dog)
{
Dog d = (Dog)a;
d.lookHome();
}
else
{
}
}
instanceof:用于判断对象的具体类型。那么如果有很多Animal的子类需要有很多的if(a instanceof 子类对象)判断语句,用来判断该子类属于哪个对象,这样的话
多态就很难解决了?怎样更好的实现呢?

评分

参与人数 1技术分 +1 收起 理由
周志龙 + 1 赞一个!

查看全部评分

3 个回复

倒序浏览
楼主你好,如果问题已解决请将帖子状态修改为提问结束,

如果未解决请继续提问,谢谢合作

修改方法请看解释帖:http://bbs.itheima.com/thread-89313-1-1.html
回复 使用道具 举报

多态:父类引用指向子类对象。
优点:提高了程序的扩展性
缺点:再向上转型的时候,失去了子类的特有方法。属性

所以取长补短,在实际开发中,一般是只会调用Animal中的共性方法,eat()
很好理解,给你一个Animal你不会去想调用它的抓老鼠。工地,等其子类的特有方法吧。

本例只是做讲课用的案例,说明可以调用。但开发中没有的。有也不会出现你说的很多个子类的情况。
那样是不利于开发的。
这是我的理解,希望能帮助你。加油一起进步

评分

参与人数 1技术分 +1 收起 理由
乔兵 + 1

查看全部评分

回复 使用道具 举报
代码这样发看起来有点头疼  点一下代码 粘上去就会好多了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马