2020-01-14 Java中父类与子类的构造器调用和私有变量及私有方法的继承问题

子类可以继承父类所有的变量和方法,但是有没有想过子类为何能继承它们,它们是凭空继承而来的么?当然不是,其实每当调用子类构造器new一个子类对象的时候,都要先调用父类的构造new一个父类对象,父类对象隐式的存在于子类中,子类是这样继承父类的变量和方法的,以我中有你的方式,所以子类构造器都必须显示或者隐式调用父类构造器,如果不能调用则该子类无效。另外还要补充的一点是,子类构造器调用父类构造器的方式类似于递归,也就是说子类先调用父类,然后父类再调用它的父类,以此类推一直到一个没有父类的类为止,最先用这个没有父类的类的构造器生成对象,再依次往子类方向生成对象。

tip:
子类构造器中默认调用的是父类中的无参构造器,当父类构造器没写或者只有无参构造器时,子类构造器写不写父类的构造器都行;
当父类中只有有参构造器时,则子类构造器中必须指明父类构造器;
当父类中有无参构造器又有有参构造器时,子类构造器中若不写则是默认调用父类无参构造器,若要调用父类有参构造器则需要指明。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容