我们是谁保护我们的课程?

时间:2012-02-12 00:18:32

标签: oop encapsulation access-modifiers

我正在学习C#,我想知道,声明类/方法私有的重点是什么?我们是谁隐藏/限制对这些类的访问。

因为如果某人正在编辑源代码,他们可以将标记从私有更改为公共。我不确定用户如何能够访问这些方法以及它会导致什么问题。

tldr;访问修饰符有什么意义。

谢谢!

6 个答案:

答案 0 :(得分:7)

由于此功能通常被称为会员可见性,因此不是安全功能。它对程序员来说很方便,旨在帮助限制跨类依赖。通过声明成员私有,可以防止其他代码直接访问它。这有两个好处:

  • 如果您发现某个成员变量以您不想要的方式被操纵,那么当该变量为私有时,您必须检查的代码量会显着减少
  • 你可以改变一个类的内部工作方式(声明为私有的所有东西)而不破坏接口(所有声明为public的东西)

成员可见性可能是实现封装的最重要的语言特性,封装是面向对象编程的核心原则之一。

答案 1 :(得分:1)

这是一个基本的OO概念 - encapsulation,与安全本身无关。引用维基百科(强调我的):

  

隐藏对象的内部保护其完整性   阻止用户将组件的内部数据设置为   状态无效或不一致。封装的好处是   可以降低系统复杂性,从而提高稳健性   允许开发人员限制软件之间的相互依赖性   组件。

答案 2 :(得分:1)

它使您的代码保持整洁。您将代码分为公共接口和私有内部。

这样,您可以更改内部结构,而不必担心会破坏依赖于您的课程的代码。您还可以安全地假设在您不看时没有其他代码修改了您的内部状态。

答案 3 :(得分:0)

  

访问修饰符用于封装:它们允许您进行排列   您的代码在包和类中,并且只有“官方”公开   界面可见外部,同时隐藏实现   详细信息(您要执行的操作,以便以后可以更改它   告诉任何人。)

     

当您将代码发布为时,这尤其(仅?)很重要   库供其他程序员使用。即使代码仅用于   你自己的程序,它有助于将更大的程序组织成几个   包。 - Thilo

答案 4 :(得分:0)

您可以通过两种方式编写代码:专为扩展而设计,并按照原样使用。

您可能有也可能无法访问源代码。

访问修饰符在为扩展设计的代码中最为重要,客户端程序员(扩展和使用您的代码的程序员)只需要访问您公开的API - 基本上,通过使用这些访问修饰符提供的接口。

答案 5 :(得分:0)

访问修饰符用于encapsulation,因此对象/类的内部对外部用户或类是隐藏的。这可以防止用户通过修改其实例变量和/或函数来意外或故意破坏对象/类。

封装是Open/closed principle的一个重要部分,它指的是“开放式扩展”但“关闭以进行修改”的类。这个原则允许扩展类而不用担心类的API可能在将来发生变化。