【发布时间】:2011-10-15 10:41:45
【问题描述】:
例如,在 OOP 中为什么需要放一些东西 Private 。我知道任何私有成员都不能被访问,但具有相同的类对象。但是为什么我需要这样做,而我是我项目的唯一编码员。同样的问题延伸到Protected,受到谁的保护!
【问题讨论】:
例如,在 OOP 中为什么需要放一些东西 Private 。我知道任何私有成员都不能被访问,但具有相同的类对象。但是为什么我需要这样做,而我是我项目的唯一编码员。同样的问题延伸到Protected,受到谁的保护!
【问题讨论】:
private 和 protected 不是为了防止其他编码人员访问类的内部,而是(也)防止你自己创建一个没有明确定义接口的程序。 p>
如果您项目中的每个类都可以修改其他所有类,那么您不仅容易因为巨大的状态空间而引入错误,而且还会阻止自己:
【讨论】:
访问修饰符实现两个不同的目的:
它们限制了可能导致副作用的代码数量,从而更容易建立不变量。
它们保护类的客户端免受内部表示的更改。
对于小型项目,这些优势可能不会立即显现出来,尤其是对于初学者。
【讨论】:
保护你未来的自己,否则他们可能会不小心忘记对象的哪些部分是应该与系统的其余部分分离的细节,以及哪些部分是可以被系统的其余部分依赖的可靠接口系统。
【讨论】:
语言试图强迫你写出“好”的代码。 “好”意味着代码结构化、干净且不易出错。所以你必须声明类型、私有成员等等。如果你不想这样,你可以使用在这方面较少的语言,比如python。但这意味着,您的程序可能(可能!)更不安全,或者如果它变得非常大,很容易被误解。与 cmets 相同。你不必写它们。特别是当你是唯一的程序员时。但这是一种很好的风格,如果你在半年后再次阅读你的程序,你会非常感激的。
【讨论】:
您标记了类private 的成员,这些成员不得从类外部访问。例如,您使用它来隐藏实现细节,因此您可以更改实现而不影响其他代码使用您的类。隐藏实现细节是 OOP(封装)的关键方面之一。如果你创建了一个Car 类,然后你写了很多使用Car 类的代码,然后你突然意识到你的实现性能很差,你需要重构它,如果所有的Car 实现Car 类的详细信息是私有的,您知道使用 Car 的代码都不会访问这些内容,您可以随意更改它们。如果您没有将它们标记为private,那么您可能在其他代码中使用了它们中的一些,然后会中断。
同样,protected(无论如何在 Java 中)也是出于同样的目的,但允许从您的类中派生的类访问这些成员。这是相当弱的保护,因为这当然意味着您不能在不影响派生类的情况下更改基类的实现细节。
【讨论】:
这样想:保护级别定义了您以后可以更改的内容,无需关心除此类之外的任何其他代码(私有),无需关心除此类和继承自此的每个类之外的任何其他代码类(受保护),除了使用此类(公共)的每段代码外,无需关心任何其他代码。
【讨论】:
private 或protected 来自封装概念。它来自数据隐藏概念。我相信这个归纳至少对我来说是清楚和有用的:
封装是将数据和函数组合成一个 单个单元称为类。使用封装的方法, 程序员不能直接访问数据。数据只能访问 通过类中存在的函数。数据封装 导致了数据隐藏的重要概念。数据隐藏是 对用户隐藏的类的实现细节。这 受限访问的概念导致程序员编写专门的 对隐藏成员执行操作的函数或方法 类的。必须注意确保班级是 设计得当。 (Sripriya Rajagopalan)
注意:答案很好,这个答案是为了完成它们
【讨论】:
private的问题。
如果您将一个类的成员(变量或方法)定义为私有,您将无法从外部使用它,使用另一个类,使用点运算符。 Protected 帮助您保护成员变量或方法不被继承。
【讨论】: