黑马程序员技术交流社区
标题:
在多态的体现当中,父类的引用也可以接收自己的子类对...
[打印本页]
作者:
Be_myself
时间:
2014-6-12 23:28
标题:
在多态的体现当中,父类的引用也可以接收自己的子类对...
在多态的体现当中,父类的引用也可以接收自己的子类对象是什么意思?麻烦举个例子说明下
作者:
想飞的鱼
时间:
2014-6-12 23:52
本帖最后由 想飞的鱼 于 2014-6-12 23:59 编辑
根据你的问题写了个小代码说明一下:
/*
说明多态
在多态的体现当中,父类的引用也可以接收自己的子类对象是什么意思?
*/
abstract class Animal
{
abstract public void eat();
public void sleep()
{
System.out.println("闭眼睡觉");
}
}
class Dog extends Animal
{
public void eat()
{
System.out.println("吃骨头");
}
}
class Cat extends Animal
{
public void eat()
{
System.out.println("吃鱼");
}
}
class DuoTaiDemo
{
public static void main(String[] args)
{
eat(new Dog());
eat(new Cat());
}
/*
需要一个动物,但是给了一个狗接收进来也是可以啊,
当然,这里有个类型提升,狗提升为动物,如果要使用狗的特有方法,则要强转一下,一般用到instanceof先判断一下
*/
public static void eat(Animal a)//相当于:Animal a = new Dog(); 即是父类引用接收了一个子类对象。
{
a.eat();
}
}
复制代码
作者:
GoodBoy123
时间:
2014-6-13 00:35
Student 继承Person 然后 Person p = new Studnet();这就是多态父类引用指向子类对现的体现,也叫向上转型.
作者:
马如龙
时间:
2014-6-13 00:54
public class Fu
{
public void Name()
{
System.out.println("fu");
}
}
public class Zi extends Fu
{
public void Name()
{
System.out.println("zi");
}
}
public class Test
{
public static void main(String[] args)
{
Fu p = new Zi();
p.Name();
//这时候程序执行结果是"zi";
//虽然是用父类p引用,但是方法是指向子类的方向
}
}
复制代码
程序执行结果是"zi"
虽然是用父类p引用,但是方法是指向子类的方向
作者:
不去会死
时间:
2014-6-13 06:55
3楼正解,顺便水一下分
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2