黑马程序员技术交流社区
标题:
有关多态的问题
[打印本页]
作者:
1961993790
时间:
2013-10-24 07:45
标题:
有关多态的问题
本帖最后由 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 子类对象)判断语句,用来判断该子类属于哪个对象,这样的话
多态就很难解决了?怎样更好的实现呢?
作者:
乔兵
时间:
2013-10-25 08:20
楼主你好,如果问题已解决请将帖子状态修改为提问结束,
如果未解决请继续提问,谢谢合作
修改方法请看解释帖:
http://bbs.itheima.com/thread-89313-1-1.html
作者:
Stephen_Chow
时间:
2013-10-25 14:37
多态:父类引用指向子类对象。
优点:提高了程序的扩展性
缺点:再向上转型的时候,失去了子类的特有方法。属性
所以取长补短,在实际开发中,一般是只会调用Animal中的共性方法,eat()
很好理解,给你一个Animal你不会去想调用它的抓老鼠。工地,等其子类的特有方法吧。
本例只是做讲课用的案例,说明可以调用。但开发中没有的。有也不会出现你说的很多个子类的情况。
那样是不利于开发的。
这是我的理解,希望能帮助你。加油一起进步
作者:
枫儿
时间:
2013-10-25 15:57
代码这样发看起来有点头疼 点一下代码 粘上去就会好多了
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2