为了账号安全,请及时绑定邮箱和手机立即绑定

“父类的引用指向子类的对象”怎么理解?

“父类的引用指向子类的对象”怎么理解?

__HelloWorld_ 2017-10-05 01:29:18
查看完整描述

5 回答

已采纳
?
望远

TA贡献1017条经验 获得超1032个赞

class Animal
{
  public void howl()
  {
      System.out.println("动物会叫~~");
  }  
}
class Snake extends Animal
{
    public void howl()
    {
      System.out.println("嘶嘶嘶~~");
    }  
}
class Dog extends Animal
{
    public void howl()
   {
      System.out.println("汪汪汪~~");
   }  
  }
  class Test
  {
      public void show(Animal animal)
      {
          animal.howl();
      }
  }
  public class Main
  {
      public static void main(String[] args )
      {
          Animal animal1=new Snake();//父类的引用指向子类的对象-->向上自动转型(一条蛇也是一个动物)
          Animal animal2=new Dog();//同理(一条狗也是一个动物)
          //通过向上转型实现多态的一种
          new Test().show(animal1);
          new Test().show(animal2);
      }
      
  }


查看完整回答
2 反对 回复 2017-10-05
  • __HelloWorld_
    __HelloWorld_
    请问这样的好处是什么
  • 望远
    望远
    代码我稍微改动了,你可以试试分析一下就知道。
  • __HelloWorld_
    __HelloWorld_
    Snake snake =new Snake( ); Dog dog=new Dog( ); new Test().show(snake); new Test().show (dog); /*和你刚才写的输出结果一样的,但是为什么 要用父类指向子类那种办法。 都不好意思提问了,但是还是希望您解答一下,谢谢了 */
点击展开后面3
?
Developer_Zuck

TA贡献112条经验 获得超42个赞

理解的关键点在“引用”这个词上。
你知道java的储存原理吗?也就是堆栈方法区之类的?类一般通过new的方式创建。那么new的对象储存在堆中,有一个地址值,赋值的时候不是把这个地址值赋给另一个对象,而是通过地址值的引用,这么说你明白吧?

查看完整回答
1 反对 回复 2017-10-05
?
慕姐8946757

TA贡献39条经验 获得超24个赞

就是向下转型;将父亲对象赋值给子类引用,那末就是往下走.那末就是向下转型.那末反之.将子类对象赋值给父类引用,那么就是想上走,就是向上转型.

father f  = new son();//向上转型.

son s  = (son) f;//安全向下转型.

查看完整回答
1 反对 回复 2017-10-05
?
精慕门9254224

TA贡献167条经验 获得超46个赞

向下转型

查看完整回答
1 反对 回复 2017-10-05
  • __HelloWorld_
    __HelloWorld_
    可以说通俗一点吗,打个比方
  • 精慕门9254224
    精慕门9254224
    比如水果是父类,苹果是子类,可以说苹果是水果 Fruit apple = new Apple();此时父类是引用,实例却是子类!另外说一下这是向上转型,刚说反了!你想要彻底了解,最好看看继承和多态!这些是多态的基础!
  • __HelloWorld_
    __HelloWorld_
    请问相比于直接Apple apple = new Apple();, Fruit apple = new Apple();这样有什么好处呢?
点击展开后面1
?
万飞

TA贡献117条经验 获得超186个赞

只可意会不可言传

查看完整回答
反对 回复 2017-10-05
  • 5 回答
  • 0 关注
  • 2307 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信