在面向对象编程中,public、private和protected是什么?
在面向对象编程中,public、private和protected是什么?
它们并不是真正的概念,而是在像C++和Java这样的流行语言中经常出现的特定关键字(带有略微不同的语义)。
本质上,它们旨在允许类限制对成员(字段或函数)的访问。其想法是,一个类型所允许访问的另一个类型中的内容越少,就会创建越少的依赖性。这使得可以更容易地更改已访问对象而不影响引用它的对象。
总的来说,public表示每个人都可以访问,private表示只有同一类的成员可以访问,protected表示子类的成员也被允许访问。但是,每种语言都会增加自己的东西。例如,C++允许您非公开继承。在Java中,还有默认(包)访问级别,以及有关内部类等的规则。
这三个关键字都是类中使用的访问修饰符。 public声明的内容可以被类内或类外的任何对象使用;private声明的变量只能被类内部的对象使用,不能通过直接访问改变(但可以通过友元函数等方式进行更改)。protected声明的内容可以被类和其派生类使用。
公共项是可从任何其他类访问的项。您只需要知道它是什么对象,就可以使用点运算符来访问它。受保护的意思是一个类及其子类可以访问该变量,但其他任何类都无法访问它,它们需要使用getter/setter才能对该变量执行任何操作。私有意味着只有该类直接访问该变量,其他所有内容都需要使用方法/函数来访问或更改该数据。希望这有所帮助。
与上述相同,但是从质量上来看:
private - least access, best encapsulation
protected - some access, moderate encapsulation
public - full access, no encapsulation
你提供的访问权限越少,对象实现细节泄露的就越少。这种泄露的减少意味着在修改对象的实现方式时不会破坏调用该对象的客户端,从而更加灵活(也称为“松耦合”)。这是一个非常基本的概念,需要深入理解。