There are 4 basic features that an object oriented language has.
Here is an easy way to remember them:
Abstraction means that only necessary information is exposed outside the class, and the details of how it does what it does are hidden away from the outside.
Polymorphism means that a derived class can take the place of a base class, (Liskov substitution principle), and that subclasses can override the behavior of virtual methods in their parent class to change their implementation.
Inheritance means that an object or class is based on another object or class using the same implementation. This means that the child class inherits all the properties and behaviors of the parent.
Encapsulation means that both the data and the methods which work on the data are contained together.