105

面向对象编程中什么是公共的、私有的和受保护的?

4

6 回答 6

169

它们是访问修饰符,帮助我们实现封装(或信息隐藏)。它们告诉编译器哪些其他类应该有权访问正在定义的字段或方法。

private- 只有当前类才能访问该字段或方法。

protected- 只有该类的当前类和子类(有时也包括同包类)才能访问该字段或方法。

public- 任何类都可以引用字段或调用方法。

这假定这些关键字用作类定义中的字段或方法声明的一部分。

于 2009-06-20T02:23:26.400 回答
11

它们不是真正的概念,而是在 C++ 和 Java 等流行语言中往往出现的特定关键字(语义略有不同)。

本质上,它们旨在允许类限制对成员(字段或函数)的访问。这个想法是,在另一种类型中允许访问的类型越少,可以创建的依赖项就越少。这允许更容易地更改访问的对象,而不会影响引用它的对象。

从广义上讲,public 意味着每个人都可以访问,private 意味着只允许同一类的成员访问,protected 意味着也允许子类的成员。但是,每种语言都为此添加了自己的东西。例如,C++ 允许您非公开继承。在Java中,还有一个默认的(包)访问级别,还有关于内部类的规则等等。

于 2009-06-20T02:11:31.027 回答
8

这三个都是在类中使用的访问修饰符和关键字。public 声明的任何东西都可以被类内或类外的任何对象使用,private 中的变量只能被类内的对象使用,不能通过直接访问来更改(因为它可以通过友元函数等函数来更改) .任何在受保护部分下定义的东西都可以被该类及其刚刚派生的类使用。

于 2011-04-11T11:53:45.000 回答
4

如上所述,但在质量上:

private - least access, best encapsulation
protected - some access, moderate encapsulation
public - full access, no encapsulation

您提供的访问权限越少,从您的对象中泄漏的实现细节就越少。这种泄漏的减少意味着在不破坏对象客户端的情况下更改对象的实现方式方面具有更大的灵活性(也称为“松散耦合”)。这是一个真正需要理解的基本问题。

于 2020-08-06T20:51:15.253 回答
3

公共项目是可以从任何其他类访问的项目。您只需要知道它是什么对象,就可以使用点运算符来访问它。受保护意味着一个类及其子类可以访问该变量,但不能访问任何其他类,它们需要使用 getter/setter 对变量执行任何操作。私有意味着只有该类可以直接访问变量,其他所有内容都需要方法/函数来访问或更改该数据。希望这可以帮助。

于 2009-06-20T02:10:57.673 回答
0

总而言之,在面向对象编程中,一切都被建模为类和对象。类包含属性和方法。public、private 和 protected 关键字用于指定从其他类或其他 .dll 甚至其他应用程序对类的这些成员(属性和方法)的访问。

于 2009-06-20T09:44:36.377 回答