java吧 关注:1,263,322贴子:12,764,787
  • 9回复贴,共1

引用变量与对象的疑问

只看楼主收藏回复

Object o=new Dog();
o.bark();------>错误!!此处引用变量为Object型,而非Dog型!不可调用Dog的bark方法!
A o = new Dog();//A为dog父类
o.bark();//可以运行
这两个为什么一个可以运行,一个出错呢?不是说object是所有类的父类吗


IP属地:广东1楼2019-11-15 00:12回复
    纯签到党


    IP属地:广东2楼2019-11-15 00:13
    回复
      2025-06-08 21:06:08
      广告
      因为在用 Object o=new Dog(); 的时候,o是Dog子类对象的上转型对象,上转型对象限制了子类调用方法和参数,只能调用类中继承或重写的父类方法,你可以这样理解,Animal是父类,Object是爷爷类,他们都给Dog定了些规矩,现在是由爷爷全权管教Dog,父亲那些规矩在这时候是不起任何作用的,甚至Dog自己给自己定的规矩(自定义方法)都失效了,爷爷定了几条规矩那就只能是几条,当然Dog可以修改规矩的内容(重写父类方法)


      IP属地:广东3楼2019-11-15 01:30
      收起回复
        A a = new B();
        a对象只能调用A类的方法,
        你第二例子能调用是因为类中有这个方法,
        而第一个例子不能因为类中没这个方法


        IP属地:江西4楼2019-11-15 09:21
        收起回复
          语法规定如此,奈何?


          IP属地:河南5楼2019-11-15 10:00
          回复
            多态 父类引用指向子类对象 因为Object没有bark方法 你看看你的A类肯定有bark方法吧 对象调用子类特有方法 必须要向下转型 不然会编译错误


            IP属地:日本6楼2019-11-15 10:47
            收起回复