mu_bu_shi_ding
2017-08-01 05:50
采纳率: 76.9%
浏览 1.6k
已采纳

Java继承中 如果父类中的方法调用父类的其他方法,还需要理会子类的方法有没有重没重写?

图片说明

=======分隔符==========

图片说明

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

7条回答 默认 最新

  • 战在春秋 2017-08-01 06:12
    已采纳

    子类拥有父类非 private 的属性和方法。
    类B继承于类A,test方法也继承下来了。

    类B的代码实际上是这样的

    class B extends A{
           void test(){  //继承了类A的test
                         method();
                 }
                void method(){
                        System.out.println("Sub")
                }
    }
    

    继承是面向对象的基本概念,这样再看看题目的输出,是不是就好理解了呢。

    如果对您有帮助,请采纳答案好吗,谢谢!

    点赞 评论
  • elim168 2017-08-01 06:01

    如果是通过子类去调用的就是需要理会的,因为子类可以重写父类的方法,方法的作用对象是子类。

    点赞 评论
  • 小-鸟 2017-08-01 06:09

    因为方法的作用对象是子类,每次调用的时候先从子类往上面找,如果子类重写了父类的方法就会调用,如果没有才会调用父类的方法。

    点赞 评论
  • Zhang Daopin 2017-08-01 06:13

    楼上说的很详细,正解!

    点赞 评论
  • 进阶得小白鼠 2017-08-01 06:14

    需要的 ,例如你上面写的

    example:

    new B().test();

    首先实例的是子类,然后,子类调用的是父类的方法,而父类中这个方法又调用了一个被子类重写的方法,

    所以,父类的test 在被调用的时候 ,实际上是调用的method这个方法,而这个方法又被子类重写,所以,转了一个

    圈回来还是调用父类被重写的方法 ,

    父类调用父类自己的方法,也是要考虑这个方法是不是被子类给重写了或者篡改了

    问题仔细考虑下,别钻牛角尖即可!

    希望对你有帮助

    点赞 评论
  • luofangfu 2017-08-01 06:28

    在 new B() 的时候 是
    void test(){
    method();
    }
    void method(){
    System.out.println("Sub");
    }
    出现的这两个方法,
    你调用 new B().test(); 自然是被重写后的方法。

    点赞 评论
  • justinhxw 2017-08-01 06:42

    因为B继承A所以无论A中有什么方法,在测试类中直接用子类获取就可以获取到父类所有的方法

    点赞 评论

相关推荐 更多相似问题