Access modifiers are an integral part of object-oriented programming.
They support the concept of encapsulation, which promotes the idea of hiding
functionality. Access modifiers allow you to define who does or doesn't have
access to certain features.
In C# there are 5 different types of Access Modifiers.
1.Public
The public keyword is an access modifier for types and type members.
Public access is the most permissive access level.There are no restrictions on
accessing public members.
Accessibility:
Can be
accessed by objects of the class
Can be
accessed by derived classes
2.Private
Private
access is the least permissive access level.
Private
members are accessible only within the body of the class or the struct in which
they are declared.
Accessibility:
Cannot be
accessed by object
Cannot be
accessed by derived classes
3.protected
A protected
member is accessible from within the class in which it is declared, and from
within any class derived from the class that declared this member.
A protected
member of a base class is accessible in a derived class only if the access
takes place through the derived class type.
Accessibility:
Cannot be accessed by object
By derived classes
4.internal
The internal
keyword is an access modifier for types and type members. We can declare a
class as internal or its member as internal. Internal members are accessible
only within files in the same assembly (.dll).
In other
words, access is limited exclusively to classes defined within the current
project assembly.
Accessibility:
In same
assembly (public)
Can be accessed by objects of the class
Can be accessed by derived classes
In other
assembly (internal)
Cannot be accessed by object
Cannot be accessed by derived classes
5.protected internal
The
protected internal accessibility means protected OR internal, not protected AND
internal.
In other
words, a protected internal member is accessible from any class in the same
assembly, including derived classes.
The
protected internal access modifier seems to be a confusing but is a union of
protected and internal in terms of providing access but not restricting. It
allows:
Inherited types, even though they belong to
a different assembly, have access to the protected internal members.
Types that reside in the same assembly,
even if they are not derived from the type, also have access to the protected
internal members.
No comments:
Post a Comment