zzkyeee
2017-07-29 08:53
采纳率: 100%
浏览 2.4k
已采纳

java子类引用为什么能调用父类的方法?

如果,Test类继承Father类,实例化以后,Test引用t却能调用父类f1函数,请问各路大神为什么?最近学完J2EE以后很多基础都忘了,希望大神勿喷,谢谢。图片说明

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

5条回答 默认 最新

  • 岳豪 2017-07-29 09:33
    已采纳

    因为在子类的默认构造函数里第一句默认的是super(),就是默认实例化父类了.所以子类的引用同时也指向了父类,

    点赞 打赏 评论
  • hokinhu 2017-07-29 09:35

    因为在子类在实例化的时候,构造函数第一句默认是super();是不显示的

    点赞 打赏 评论
  • FixedStarHaHa 2017-07-29 09:43

    Java新手,正学基础,这个就是继承的特点,能够复用父类的方法,子类可以继承父类非私有成员包括非私有的成员函数和非私有的成员方法,这样可以增加代码的复用性。
    子类继承了父类,根据上面说的继承关系,子类就继承了父类的公有方法f1,相当于子类也有f1的方法,所以子类的引用可以指向这个方法。
    我理解的就这样了,希望能够帮到你。我正向Javaee转型中。。。。。

    点赞 打赏 评论
  • 小-鸟 2017-07-29 13:55

    个人理解: 在实例化子类Test的时候系统默认的调用了,Test的构造函数,而构造函数的第一行代码默认都是 super() ;
    然后实例化了父类,这就和继承有关系了,父类是public的方法 子类可以直接使用 , 这样为了减少代码的重用,
    至于你说的这个 "父类的对象指向子类的引用 " Father father = new Test(); 这个是向上转型(子类转成父类) 是多态的一种体现
    java多态是由动态绑定技术来实现的,动态绑定即运行时绑定(以之对应的有静态绑定,即编译时绑定)这个你的慢慢接受,记住这
    句话就行(当父类方法子类未重写,调用父类;若子类重写父类方法,调用子类方法,这就是动态绑定。)

    点赞 打赏 评论
  • 大鹏起兮震四方 2017-07-29 14:39

    因为子类继承了父类里非final和private的函数。

    点赞 打赏 评论

相关推荐 更多相似问题