Define a class
Template for an object
Defines the state and behaviour of an object
Define attributes
Gives an object properties
Define methods
They define the behaviour associated with a class that describe actions it can perform
Define a setter
Method that sets the value of a particular attribute
Define a getter
A method that retrieves the value of a given attribute
Define encapsulation
Preventing attributes being directly accessed and edited
Attributes are declared as private so can only be altered by public methods
Define a constructor
Allows a new object to be created
Define inheritance
Subclass possesses all the methods and attributes of the superclass and can have its own additional properties
Define polymorphism
Objects can behave differently depending on their class
Same method can produce different outputs
Define overriding
Redefining a method within a subclass and altering the code so that it functions differently and produces a different output
Overloading
Passing in different parameters into a method