在Java中OOP概念背后的原因是什么“不允许覆盖变量”?

时间:2014-11-21 17:18:21

标签: java oop override

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

但是在子类的情况下,我想知道为什么子类无法访问从母类继承的变量(例如Mother类具有变量A = ""以及创建Child时来自extends类的Mother的类。不允许在A类中立即将变量Child更改为另一个值(覆盖)。

是的,还有另一种方法可以使用constructorsuper关键字来解决此问题。问题是为什么他们不允许我们更简单地做到这一点?例如,只允许我们使用constructorsuper关键字更轻松地覆盖变量。我认为应该有一些理由来支持这一点。正确?

1 个答案:

答案 0 :(得分:1)

它是关于保护所涉及对象的内部实现,并为子类的作者提供一个限制子类需要知道的超类的契约。

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

如果语言允许子类更改任何超类的任何变量,那么子类就有太多可能破坏超类,并且无法更改超类实现细节而不会有破坏子类的风险。