我有两个类,A类和B类,它们扩展了A类。 我们说您无法访问超类的私有成员。假设A类有一个返回私有成员的公共方法。现在,如果我们创建一个B类实例并调用该方法,我们实际上可以看到它可以访问私有成员。为什么会这样?
答案 0 :(得分:4)
无论您的内部实施是什么,您仍然可以访问它的公共成员(方法)。您不能直接访问私人会员,这就是它的意思。
答案 1 :(得分:1)
A类可以访问私有变量,B类可以访问getX方法。当你调用A.getX()时,类A传递x的值。把它想象成代理。您无权访问该对象,但您可以通过某些操作路由您的请求。
答案 2 :(得分:0)
通过将getter方法添加到类A
,您已更改A
公开的合同,以允许所有其他类只读访问该成员。只有一个getter不允许任何其他人(包括子类)修改私有成员,只读它。
没有特别的原因应该以其他类不受限制的方式限制子类。
答案 3 :(得分:0)
私有公共保护和默认修饰符定义组件可访问的范围,getX()在类A的范围内定义,其中x被定义为私有,因此它可以访问x。