Interfaces, clases abstractas, métodos por defecto
¿Compilaría y ejecutaría el siguiente código? Si no compila, ¿por qué razón? Si ejecuta, ¿cuál sería la salida?
01.
package
prueba;
02.
03.
interface
Interfaz1 {
04.
int
VARIABLE =
10
;
05.
06.
void
test1();
07.
08.
default
void
test2() {
09.
System.out.println(
"Método por defecto de Interfaz1"
);
10.
}
11.
}
12.
13.
interface
Interfaz2 {
14.
static
public
final
int
VARIABLE =
20
;
15.
16.
abstract
public
void
test1();
17.
18.
public
default
void
test2() {
19.
System.out.println(
"Método por defecto de Interfaz2"
);
20.
}
21.
}
22.
23.
abstract
class
Clase1
implements
Interfaz1, Interfaz2 {
24.
25.
int
variable;
26.
27.
public
void
test1() {
28.
System.out.println(
"Método test1 de Clase1"
);
29.
return
;
30.
}
31.
32.
public
void
test2() {
33.
System.out.println(
"Método por defecto de Clase1"
);
34.
}
35.
36.
}
37.
38.
class
Clase2
extends
Clase1 {
39.
40.
public
static
void
main(String args[]) {
41.
42.
Clase1 clase2 =
new
Clase2();
43.
System.out.println(clase2.variable);
44.
clase2.test1();
45.
clase2.test2();
46.
47.
((Interfaz1) clase2).test1();
48.
((Interfaz2) clase2).test2();
49.
50.
}
51.
52.
}