Encapsulamiento
Permite ocultar los detalles de una clase, que no son relevantes para otros objetos, de modo que los detalles pueden ser alterados en cualquier instante sin afectar otras partes.
Herencia
Permite poner una clase como extensión de otra clase, de modo que la subclase tiene al igual que la primera clase tiene elementos parecidos. Por lo que la clase superior tiene lo especifico y la clase inferior se encuentra restringido.
Poliformismo
Es una relajación del sistema de tipos, por lo cual es una
referencia a una clase y permite direcciones de objetos de la clase en cuestión y de sus clases
derivada.
Clases Abstractas
Es aquella que indica que hay métodos pero no la implementación de estos. Por lo que esto tambien puede tener métodos no-abstractos, y algunos de ellos se les debe declarar así.
Interfaces
Es una lista de acciones que permite que se realice un objeto específico dentro de una clase. Dentro de esto encontramos prototipos de una función, no código como en los métodos.
