java - java中OOP概念背后的原因是什么 "Overriding variable is not allowed"?

标签 java oop overriding

我知道任何类中的所有变量通常都应该被封装,而另一个类只能访问它本身。

但是对于子类,我想知道为什么子类无法访问从母类继承的变量(例如 Mother 类有变量 A = ""当您创建从 Mother扩展Child 类时,您不能将变量 A 更改为另一个变量值(立即覆盖)在 Child 类中)。

是的,还有另一种方法可以做到这一点,我们可以使用constructorsuper关键字来解决这个问题。问题是为什么他们不允许我们以更简单的方式做到这一点?例如,允许我们重写变量,这比使用构造函数和 super 关键字更容易。我想应该有一些理由支持这一点。对吗?

最佳答案

它是关于保护所涉及对象的内部实现,并为子类的作者提供一个契约,限制子类需要了解父类(super class)的信息。

它的实例变量的范围应该由类的作者决定,并且作者控制该范围的方式是通过为它们分配访问修饰符或通过方法调用传递对它们的引用。

如果语言允许子类更改任何父类(super class)的任何变量,那么子类就有很大可能破坏父类(super class),并且无法在不冒破坏子类风险的情况下更改父类(super class)实现细节。

关于java - java中OOP概念背后的原因是什么 "Overriding variable is not allowed"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27066851/

相关文章:

java - 如何存储 和 数组的结果并计算总和

java - 如何不向 arrayList 添加重复项

java - 缩写词 "Spitter"代表什么?

java - 数组中的给定元素找到等于目标值的组合

Java JDBC 连接在方法之间共享/中继

c++ - 虚拟继承 : Error: no unique final overrider

operator-overloading - 覆盖/重载 + 运算符以对常见的 lisp 向量进行操作

java - 根据某些事件的时间组织时间表的算法?

c++ - 在指向现有内存地址的 hpp 文件中声明成员函数的最佳方法

C# - 强制重写的方法由父级而不是实例调用