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

Class 在面向对象编程中,什么是公共的、私有的和受保护的?,class,oop,definition,access-modifiers,Class,Oop,Definition,Access Modifiers,在面向对象编程中,什么是公共的、私有的和受保护的?公共项是可以从任何其他类访问的项。您只需知道它是什么对象,就可以使用点运算符访问它。受保护意味着类及其子类可以访问变量,但不能访问任何其他类,它们需要使用getter/setter来处理变量。private意味着只有该类可以直接访问该变量,其他所有内容都需要一个方法/函数来访问或更改该数据。希望这有帮助。< P>它们不是真正的概念,而是在C++和java等流行语言中倾向于发生的(具有稍微不同的语义)的特定关键词。p> 本质上,它们意味着允许类限制

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

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

< P>它们不是真正的概念,而是在C++和java等流行语言中倾向于发生的(具有稍微不同的语义)的特定关键词。p> 本质上,它们意味着允许类限制对成员(字段或函数)的访问。其思想是,一种类型在另一种类型中被允许访问的越少,可以创建的依赖性就越少。这样可以更容易地更改访问的对象,而不会影响引用它的对象


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

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

private
-只有当前类可以访问字段或方法

受保护
-只有此类的当前类和子类(有时也包括相同的包类)可以访问字段或方法

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


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

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

这三个关键字都是类中使用的访问修饰符和关键字。
公开声明的任何内容都可以由类内或类外的任何对象使用,私有变量只能由类内的对象使用,不能通过直接访问进行更改(因为它可以通过friend函数等函数进行更改).受保护部分下定义的任何内容都可由类及其刚派生的类使用。

如上所述,但定性:

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

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

+1,我发现有一点难以理解,即在java中,同一个包的成员可以访问受保护的成员,java还有第四个访问修饰符,即空字符串。不提供任何访问修饰符将允许从任何包级类进行访问。我喜欢“编译器”部分,因为我知道的大多数语言所有函数/类都可以在运行时轻松访问,例如通过.NET中的反射。因此我倾向于说,这些访问修饰符基本上只是帮助程序员通过隐藏某些东西来指导其他程序员使用相同的代码。与Delphi一样,同一单元上的其他类也可以访问私有成员,如果您不希望出现这种行为,就必须使用严格的私有。C#也会使用相同包的访问保护成员。本质上,C#只是微软的Java