Ejemplo clase final

package com.trifulcas.herencia;

public final class Aviso {
	private String mensaje;

	public Aviso(String mensaje) {
		super();
		this.mensaje = mensaje;
	}
	public void alarma() {
		System.out.println(mensaje);
	}
}

Al ser final, no se puede derivar clases de aquí. Lo siguiente no está permitido:

package com.trifulcas.herencia;

public class AvisoSubClase extends Aviso {

	public AvisoSubClase(String mensaje) {
		super(mensaje);
	}
	@Override
	public void alarma() {
		System.out.println("Mensaje desde una subclase");
	}
}

Lo podemos hacer a nivel de método:

package com.trifulcas.herencia;

public  class Aviso {
	private String mensaje;

	public Aviso(String mensaje) {
		super();
		this.mensaje = mensaje;
	}
	public final void alarma() {
		System.out.println(mensaje);
	}
}

Ahora solo se queja en el método, no en la clase:

package com.trifulcas.herencia;

public class AvisoSubClase extends Aviso {

	public AvisoSubClase(String mensaje) {
		super(mensaje);
	}
	@Override
	public void alarma() {
		System.out.println("Mensaje desde una subclase");
	}
}

Publicado por

Juan Pablo Fuentes

Formador de programación y bases de datos