饭后和同事闲聊,谈到以前面试的经历。有个面试官问他,你怎么看继承破坏封装?

封装就是把细节和内容隐藏出来,你只需要根据我给你提供的接口去调用,所以封装是安全的。我这里改变实现,并不会不影响调用者。

B类继承A类,那么B类将拥有A类的public 和 protected 属性和方法。继承是安全的,但是如果父类封装的protected的属性,被子类或者是同包类继承,那么就不安全了。其实private属性也会被继承,只不过访问的途径被屏蔽掉了,这也就是为什么可以通过反射,可以获取到private私有属性。



继承破坏了封装:是因为属性的访问修饰符被修改,使得属性在本包和子类里可以任意修改属性的数据,数据的安全性从而得不到保障。