Interfaces en Java
El contrato, más el comportamiento que el propio contrato puede traer.
Shape[] shapes = { new Circle(1.5), new Square(2) };
for (var shape : shapes) {
System.out.printf("%.2f / %s%n", shape.area(), shape.label());
}
interface Shape {
double area();
// un método default entrega comportamiento junto con el contrato
default String label() { return "a " + getClass().getSimpleName(); }
}
record Circle(double radius) implements Shape {
public double area() { return Math.PI * radius * radius; }
}
record Square(double side) implements Shape {
public double area() { return side * side; }
}
Cómo funciona
interface Shapeexigearea; los records la implementan.- Un método
defaultle regalalabela cada implementador. - El arreglo de figuras despacha a cada implementación.
Palabras clave y builtins usados aquí
defaultdoubleforimplementsinterfacenewpublicrecordreturnvar
El intento, en números
- Líneas
- 19
- Caracteres a escribir
- 520
- Tokens
- 129
- Ritmo de tres estrellas
- 85 tpm
Al ritmo de tres estrellas de 85 tokens por minuto, este intento toma unos 91 segundos.
Paso 4 de 4 en Clases y records; paso 21 de 29 en Fundamentos del lenguaje.