![]() |
1
7
这很简单,因为它违反了封装。另一个类不应该接触到您的类中,并且在处理一些事情,即使您概括了该类。例如,一辆车如何知道关于一辆车的任何事情?基本类的全部要点是提供子类,但是就像一个过度保护的父类一样,您的建议太多了。 |
![]() |
2
7
为了回答更新问题(因为原始问题已经得到了很好的回答),private的目的是隐藏实现细节,以便这些实现细节不会成为依赖项。这是面向对象编程封装的本质,通过将不同的部分隔离到各自的区域来确保复杂性的可管理性。 因为类知道它自己的实现——它定义了它,所以在限制对其他实例的访问方面没有任何收获,因为类实现声明了所有私有实例,它已经公开了所有这些细节。 在这种情况下隐藏它实际上会增加复杂性,因为您需要添加一个额外的访问级别来允许类级别的可见性而不是实例级别的可见性,而实际上不会封装任何进一步的复杂性。 |
![]() |
3
4
这都是关于继承和封装的。 Java的可见性规则说明
当然,正如您提到的,在反思中,您可以更改规则(除非SecurityManager禁止这样做) |
![]() |
4
0
我更倾向于从务实和现实的角度来看待它:
你建议什么语法
而且,基类(超级类)不知道它是从什么时候继承的。为了让基类知道它何时被继承,您必须能够在从它继承时修改基类。你是说我应该修改我的本地副本吗?
当我决定在你的计算机上运行我的代码的那一天发生了什么,你收到我修改过的
这些问题能以某种方式克服吗?当然。允许它有什么价值吗?我看不见。 |
|
simply lemon · python上链表的添加方法 11 月前 |
|
Anonymous · 为什么在这个例子中self和类名的用法不同? 1 年前 |
![]() |
P N Singh · 在CPP Oops中调用对象而不创建它 1 年前 |
![]() |
Muthuraj · 如何创建一个通用工厂来创建某种类型的实例[重复] 1 年前 |
![]() |
Andy Votava · 从父类定义调用学生方法 1 年前 |