面向对象编程中的公共,私有和受保护是什么?
答案 0 :(得分:130)
它们是访问修饰符并帮助我们实现Encapsulation(或信息隐藏)。它们告诉编译器哪些其他类应该有权访问正在定义的字段或方法。
private
- 只有当前班级才能访问该字段或方法。
protected
- 只有此类的当前类和子类(有时也包括同名包类)才能访问该字段或方法。
public
- 任何类都可以引用该字段或调用该方法。
这假设这些关键字在类定义中用作字段或方法声明的一部分。
答案 1 :(得分:4)
所有这三个都是在类中使用的访问修饰符和关键字。 在公共声明的任何内容都可以被类中的任何对象或类外部使用,私有中的变量只能由类中的对象使用,并且不能通过直接访问来更改(因为它可以通过诸如friend函数之类的函数进行更改) 。受保护部分下定义的任何内容都可以由类及其派生类使用。
答案 2 :(得分:3)
它们不是真正的概念,而是在C ++和Java等流行语言中倾向于发生(具有略微不同的语义)的特定关键字。
基本上,它们旨在允许类限制对成员(字段或函数)的访问。我们的想法是,允许在另一种类型中访问的类型越少,可以创建的依赖性越小。这样可以更轻松地更改访问的对象,而不会影响引用它的对象。
一般来说,public表示允许每个人访问,private表示只允许同一类的成员访问,而protected表示也允许子类成员访问。但是,每种语言都会添加自己的东西。例如,C ++允许您非公开地继承。在Java中,还有一个默认(包)访问级别,并且有关于内部类的规则等。
答案 3 :(得分:1)
公共项目是可从任何其他类访问的项目。您只需要知道它是什么对象,您可以使用点运算符来访问它。受保护意味着类及其子类可以访问变量,但不能访问任何其他类,它们需要使用getter / setter对变量执行任何操作。私有意味着只有该类可以直接访问变量,其他所有内容都需要方法/函数来访问或更改该数据。希望这会有所帮助。
答案 4 :(得分:1)
同上,但在质量上:
private - least access, best encapsulation
protected - some access, moderate encapsulation
public - full access, no encapsulation
您提供的访问次数越少,实现细节泄漏出对象的机会就越少。减少此类泄漏意味着在不破坏对象客户的情况下更改对象实现方式的灵活性(也称为“松散耦合”)。这是真正了解的基本知识。
答案 5 :(得分:0)
总而言之,在面向对象编程中,所有内容都被建模为类和对象。 类包含属性和方法。 public,private和protected关键字用于指定从其他类或其他.dll甚至其他应用程序访问类的这些成员(属性和方法)。