Clases Concretas en Java
1. Introducción
En esta guía rápida, discutiremos el término "clase concreta" en Java.
Primero, definiremos el término. Luego, veremos cómo difiere de las interfaces y las clases abstractas.
2. ¿Qué es una Clase Concreta?
Una clase concreta es una clase de la cual podemos crear una instancia utilizando la palabra clave new.
En otras palabras, es una implementación completa de su plantilla. Una clase concreta está completa.
Imagina, por ejemplo, una clase Coche:
public class Coche {
public String pitar() {
return "¡beep!";
}
public String conducir() {
return "vroom";
}
}
Dado que todos sus métodos están implementados, la llamamos una clase concreta y podemos instanciarla:
Coche coche = new Coche();
Algunos ejemplos de clases concretas en el JDK son HashMap, HashSet, ArrayList y LinkedList.
3. Abstracción en Java vs. Clases Concretas
Sin embargo, no todos los tipos en Java implementan todos sus métodos. Esta flexibilidad, también llamada abstracción, nos permite pensar en términos más generales sobre el dominio que estamos tratando de modelar.
En Java, podemos lograr la abstracción utilizando interfaces y clases abstractas.
Echemos un vistazo más detenido a las clases concretas comparándolas con estas otras.
3.1. Interfaces
Una interfaz es una plantilla para una clase. O, en otras palabras, es una colección de firmas de métodos no implementados:
interface Conducible {
void pitar();
void conducir();
}
Nota que utiliza la palabra clave interface en lugar de class.
Dado que Conducible
tiene métodos no implementados, no podemos crear una instancia de ella con la palabra clave new.
Pero, las clases concretas como Coche
pueden implementar estos métodos.
El JDK proporciona una serie de interfaces como Map, List y Set.
3.2. Clases Abstractas
Una clase abstracta es una clase que tiene métodos no implementados, aunque puede tener ambos:
public abstract class Vehiculo {
public abstract String pitar();
public String conducir() {
return "zoom";
}
}
Nota que marcamos las clases abstractas con la palabra clave abstract.
Nuevamente, dado que Vehiculo
tiene un método no implementado, pitar
, no podremos usar la palabra clave new.
Algunos ejemplos de clases abstractas en el JDK son AbstractMap y AbstractList.
3.3. Clases Concretas
En contraste, las clases concretas no tienen métodos no implementados. Ya sea que las implementaciones se hereden o no, mientras cada método tenga una implementación, la clase es concreta.
Las clases concretas pueden ser tan simples como nuestro ejemplo de Coche
anterior. También pueden implementar interfaces y extender clases abstractas:
public class CocheElegante extends Vehiculo implements Conducible {
public String pitar() {
return "beep";
}
}
La clase CocheElegante
proporciona una implementación para pitar
y hereda la implementación de conducir
de Vehiculo.
Como tal, no tiene métodos no implementados. Por lo tanto, podemos crear una instancia de la clase CocheElegante
con la palabra clave new.
CocheElegante coche = new CocheElegante();
O, dicho de manera simple, todas las clases que no son abstractas, las llamamos clases concretas.
4. Resumen
En este breve tutorial, aprendimos acerca de las clases concretas y sus especificaciones.
Además, mostramos las diferencias entre interfaces y clases concretas y abstractas.