Interfaces, clases abstractas, métodos por defecto
domingo, junio 11, 2017 at 8:42AM
jcarmonaloeches in OCA 8, OCJA

¿Compilaría y ejecutaría el siguiente código? Si no compila, ¿por qué razón? Si ejecuta, ¿cuál sería la salida?



package prueba;

interface Interfaz1 {
	int VARIABLE = 10;

	void test1();

	default void test2() {
		System.out.println("Método por defecto de Interfaz1");
	}
}

interface Interfaz2 {
	static public final int VARIABLE = 20;

	abstract public void test1();

	public default void test2() {
		System.out.println("Método por defecto de Interfaz2");
	}
}

abstract class Clase1 implements Interfaz1, Interfaz2 {

	int variable;

	public void test1() {
		System.out.println("Método test1 de Clase1");
		return;
	}

	public void test2() {
		System.out.println("Método por defecto de Clase1");
	}

}

class Clase2 extends Clase1 {

	public static void main(String args[]) {

		Clase1 clase2 = new Clase2();
		System.out.println(clase2.variable);
		clase2.test1();
		clase2.test2();

		((Interfaz1) clase2).test1();
		((Interfaz2) clase2).test2();

	}

}


Article originally appeared on javaHispano (http://www.javahispano.org/).
See website for complete article licensing information.