Clase abstracta e interfaces todo junto

package com.trifulcas.herencia.interfaces;

public abstract class Animal {
	private String nombre;

	public Animal(String nombre) {
		super();
		this.nombre = nombre;
	}

	/**
	 * @return the nombre
	 */
	public String getNombre() {
		return nombre;
	}

	/**
	 * @param nombre the nombre to set
	 */
	public void setNombre(String nombre) {
		this.nombre = nombre;
	}

	@Override
	public String toString() {
		return "Animal [nombre=" + nombre + "]";
	}
	
	public abstract void hacerRuido();
	
}

package com.trifulcas.herencia.interfaces;

public class Pato extends Animal implements IVolar, INadar, ICorrer {

	public Pato(String nombre) {
		super(nombre);
		// TODO Auto-generated constructor stub
	}

	// Lo implemento porque implemento el interfaz IVolar
	@Override
	public void volar() {
		System.out.println("Un patito volando");

	}

	// Lo implemento porque implemento el interfaz ICorrer

	@Override
	public void correr() {
		System.out.println("Un patito corriendo");

	}

	// Lo implemento porque implemento el interfaz INadar

	@Override
	public void nadar() {
		System.out.println("Un patito nadando");

	}

	// Lo tengo que implementar porque lo tiene la clase madre
	// Animal
	@Override
	public void hacerRuido() {
		System.out.println("Cua cua");
		
	}

}

package com.trifulcas.herencia.interfaces;

public class Perro extends Animal implements ICorrer, INadar {

	public Perro(String nombre) {
		super(nombre);
		// TODO Auto-generated constructor stub
	}

	
	// Lo implemento porque implemento el interfaz ICorrer

	@Override
	public void correr() {
		System.out.println("Un perrito corriendo");
	}

	// Lo implemento porque implemento el interfaz INadar

	@Override
	public void nadar() {
		System.out.println("Un perrito nadando");
	}


	

	// Método abstracto de la clase madre
	@Override
	public void hacerRuido() {
		System.out.println("Guau guau");
		
	}

}

Publicado por

Juan Pablo Fuentes

Formador de programación y bases de datos