继承

java是否会继承private,protected部分?

对于子类继承来说无论是否继承private,protected部分子类都无法访问到父类的这些部分
所以从逻辑上讲是没有继承这些部分的。
但是在内存当中,在一个子类被创建的时候,首先会在内存中创建一个父类对象然后在父类对象外部放上子类独有的属性,两者合起来形成一个子类的对象。所以所谓的继承使子类拥有父类所有的属性和方法其实可以这样理解,子类对象确实拥有父类对象中所有的属性和方法,但是父类对象中的私有属性和方法,子类是无法访问到的,只是拥有,但不能使用。就像有些东西你可能拥有,但是你并不能使用。所以子类对象是绝对大于父类对象的,所谓的子类对象只能继承父类非私有的属性及方法的说法是错误的。可以继承,只是无法访问到而已。

父类子类强转的问题

  • 子类可以强转为父类
    这是动态多态中常见的实现方法

  • 父类强转为子类
    一般情况下这是不允许的

  • 如果子类中实现了父类中a方法的重载, 当子类被强转成父类时,这些重载就不能使用了,即使这些方法声明了virtual,但是通过此对象使用a方法还是用的子类的实现方法。

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

推荐阅读更多精彩内容