views:

1188

answers:

4

What are public, private and protected in object oriented programming?

+1  A: 

A public item is one that is accessible from any other class. You just have to know what object it is and you can use a dot operator to access it. Protected means that a class and its subclasses have access to the variable, but not any other classes, they need to use a getter/setter to do anything with the variable. A private means that only that class has direct access to the variable, everything else needs a method/function to access or change that data. Hope this helps.

indyK1ng
+1  A: 

They aren't really concepts but rather specific keywords that tend to occur (with slightly different semantics) in popular languages like C++ and Java.

Essentially, they are meant to allow a class to restrict access to members (fields or functions). The idea is that the less one type is allowed to access in another type, the less dependency can be created. This allows the accessed object to be changed more easily without affecting objects that refer to it.

Broadly speaking, public means everyone is allowed to access, private means that only members of the same class are allowed to access, and protected means that members of subclasses are also allowed. However, each language adds its own things to this. For example, C++ allows you to inherit non-publicly. In Java, there is also a default (package) access level, and there are rules about internal classes, etc.

Uri
+10  A: 

They are access modifiers and help us implement Encapsulation (or information hiding). They tell the compiler which other classes should have access to the field or method being defined.

private - Only the current class will have access to the field or method.

protected - Only the current class and subclasses (and sometimes also same-package classes) of this class will have access to the field or method.

public - Any class can refer to the field or call the method.

This assumes these keywords are used as part of a field or method declaration within a class definition.

Ben S
note that in java members of the same package can access protected members
landon9720
Yes, and Java also has a fourth access modifier which is the empty string. Not giving any access modifier will allow access from any package-level class.
Ben S
I like the "compiler" part, because most languages I know all functions/classes can be easily accessed at runtime for example via reflections in .NET. Therefore I tend to say, that these access modifiers are basically just a help for programmers to guide other programmers working on/with the same code by hiding certain things.
merkuro
@merkuro: I tried to be as concise as possible and hint towards that with the encapsulation mention.
Ben S
Some languages have some particularities. Like in Delphi, private members are acessible by other classes on the same unit, and you have to use strict private if you don't want this behavior.
Fabio Gomes
The question didn't mention a language so I tried to stay language-agnostic, though this is becoming a nice list of access modifier language differences :)
Ben S
A: 

To sum it up,in object oriented programming, everything is modeled into classes and objects. Classes contain properties and methods. Public, private and protected keywords are used to specify access to these members(properties and methods) of a class from other classes or other .dlls or even other applications.

Zaki