A class which will not be used to instantiate objects.
"Hiding" properties and methods of a class from the "outside world" by making these private.
Over-loading Polymorphism
Implementing a method multiple times to accept different parameters.
Implementing an inherited method differently in a sub-class.
When a method or property can be accessed from outside the class.
When a method or property can only be accessed from inside the class.
A public method used to retrieve the content of a private property.
A public method used to set/overwrite the content of a private property.