Listado completo de tutoriales
88 - Clases finales |
En Java podemos sellar una clase para evitar que otras clases hereden de la misma mediante la palabra clave 'final' previo a la declaración de la clase:
public final class [Nombre de la clase] { }
En algunas situaciones donde veamos que no tiene sentido aplicar herencia a la clase que estamos creando podemos declararla de tipo final. Si luego alguien quiere heredar de la misma se genera un error de compilación.
Desarrollar una clase que represente un punto en el plano y tenga los siguientes métodos: constructor, imprimir en que cuadrante se encuentra dicho punto (concepto matemático, primer cuadrante si x e y son positivas, si x<0 e y>0 segundo cuadrante, etc.)
Sellar la clase para evitar que se pueda aplicar herencia en la misma.
public final class Punto { private int x, y; public Punto(int x, int y) { this.x = x; this.y = y; } void imprimirCuadrante() { System.out.print("[" + x + "," + y + "] "); if (x > 0 && y > 0) System.out.println("Se encuentra en el primer cuadrante."); else if (x < 0 && y > 0) System.out.println("Se encuentra en el segundo cuadrante."); else if (x < 0 && y < 0) System.out.println("Se encuentra en el tercer cuadrante."); else if (x > 0 && y < 0) System.out.println("Se encuentra en el cuarto cuadrante."); else System.out.println("El punto no está en un cuadrante."); } public static void main(String[] ar) { Punto punto1; punto1 = new Punto(4, 5); punto1.imprimirCuadrante(); Punto punto2; punto2 = new Punto(-4, 5); punto2.imprimirCuadrante(); } }
Hemos declarado la clase 'Punto' de tipo final para evitar que se puede heredar de ella:
public final class Punto {
Luego si se intenta heredar de la misma debe generar un error sintáctico:
Podemos nombrar que el API de Java tiene una gran cantidad de clases definidas como final:
Como podemos ver hay numerosas clases en el API de Java que hemos utilizado a lo largo del curso que están pensadas para que no las heredemos.
Desarrollar una clase que represente un Cuadrado. Definir dos métodos que retornen la superficie y el perímetro.
Crear la clase como 'final'.
public final class Cuadrado { private int lado; public Cuadrado(int lado) { this.lado = lado; } public int retornarPerimetro() { return lado * 4; } public int retornarSuperficie() { return lado * lado; } public static void main(String[] ar) { Cuadrado cuadrado1 = new Cuadrado(20); System.out.println("El perímetro de un cuadrado de lado 20 es " + cuadrado1.retornarPerimetro()); System.out.println("La superficie de un cuadrado de lado 20 es " + cuadrado1.retornarSuperficie()); } }