在OOP中,私人电影是私人的?

Aan*_*Aan 5 c++ java oop

例如,在OOP中为什么需要放东西Private.我知道任何私有成员都无法访问,但具有相同的类对象.但是为什么我需要这样做而我是我项目中唯一的编码器.同样的问题延伸到Protected,保护谁!

phi*_*hag 11

private并且protected不是为了阻止其他程序员访问类的内部,而且(也)是为了防止自己创建没有明确定义的接口的程序.

如果项目中的每个类都可以修改其他每个类,那么由于巨大的状态空间,您不仅容易引入错误,而且还会阻止自己:

  • 更改任何类的实现(同时保持接口相同).
  • 曾经介绍过任何不熟悉所有课程内部所有课程的人.除非你有一个完美的记忆,并且可以背诵你曾经写过的每一行代码,包括未来你.
  • 模拟对象进行单元测试
  • 与您的程序/库的其他版本交互.假设您确实更改了一个类的内部,并设法跟踪项目中对该内部属性的每个引用.即便如此,您可能需要再次与旧版本的程序进行交互.如果使用属性而不是getter/setter方法,这将变得特别困难.


fre*_*low 7

访问修饰符实现两个不同的东西:

  1. 它们限制了可能导致副作用的代码量,从而更容易建立不变量.

  2. 它们保护类的客户端免受内部表示的更改.

对于小型项目,这些优势可能不会立即显现,特别是对于初学者.


Man*_*rse 5

保护您未来的自我,否则可能会意外地忘记对象的哪些部分是应该与系统的其余部分分离的细节,以及哪些部分是系统其余部分可以依赖的可靠接口.


Tho*_*rig 5

语言试图强迫你,写出"好"的代码."好"意味着代码结构清晰,不易出错.所以你必须声明类型,私有成员等.如果你不想那样,你可以使用这方面较少的语言,比如python.但这意味着,你的程序可能(可能!)更不安全,或者如果它变得非常大,容易误解.它和评论一样.你不必写它们.特别是当你是唯一的程序员时.但这是一个很好的风格,如果你在半年内再次阅读你的课程,你会非常感激.