我知道任何类中的所有变量通常都应该被封装,而另一个类只能访问它本身。
但是对于子类,我想知道为什么子类无法访问从母类继承的变量(例如 Mother
类有变量 A = ""
当您创建从 Mother
类扩展
的 Child
类时,您不能将变量 A
更改为另一个变量值(立即覆盖)在 Child
类中)。
是的,还有另一种方法可以做到这一点,我们可以使用constructor
和super
关键字来解决这个问题。问题是为什么他们不允许我们以更简单的方式做到这一点?例如,允许我们重写变量,这比使用构造函数和 super 关键字更容易。我想应该有一些理由支持这一点。对吗?
最佳答案
它是关于保护所涉及对象的内部实现,并为子类的作者提供一个契约,限制子类需要了解父类(super class)的信息。
它的实例变量的范围应该由类的作者决定,并且作者控制该范围的方式是通过为它们分配访问修饰符或通过方法调用传递对它们的引用。
如果语言允许子类更改任何父类(super class)的任何变量,那么子类就有很大可能破坏父类(super class),并且无法在不冒破坏子类风险的情况下更改父类(super class)实现细节。
关于java - java中OOP概念背后的原因是什么 "Overriding variable is not allowed"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27066851/