Aunque Java no categoriza las clases en “tipos” como tal, en este artículo te ofrezco una clasificación práctica, de acuerdo a su funcionalidad y características. Las clases en Java son un concepto fundamental que ha existido desde las primeras versiones del lenguaje, y a lo largo de las diferentes versiones de Java, se han agregado características y mejoras al lenguaje, algunos de estos cambios están relacionados con las clases.
La versión 16 de Java introdujo los registros, aunque existe como versión de prueba desde Java 14. El equipo que mantiene el lenguaje Java agregó los registros como una forma de ofrecernos una manipulación y encapsulamiento de datos más sencilla que como lo hacemos con las clases tradicionales de Java.
Las clases abstractas se utilizan cuando quieres tener una base que implemente el comportamiento general de un grupo de clases, con el objetivo de no repetir la implementación en cada una de las clases pertenecientes al grupo, pero al mismo tiempo quieres dejar abiertas las partes que son específicas a cada clase.
Java, siendo un lenguaje de programación orientada a objetos (POO), introduce el concepto de interfaz para definir tipos abstractos. Las interfaces sirven para escribir código que sea mantenible, reutilizable, y flexible.
La herencia en Java permite que ciertas propiedades y/o métodos puedan ser pasados de una clase (llamada clase padre) a otra clase (llamada clase hija), para que esta última pueda utilizar dichas propiedades y métodos sin tener que implementarlos nuevamente.
El polimorfismo es uno de los conceptos fundamentales de la programación orientada a objetos y es una de las características principales de Java.
El polimorfismo permite que un objeto pueda tomar varias formas o comportarse de diferentes maneras según el contexto en el que se utilice.