Hallo,
ich habe folgende Klassen:
Es wäre nett, wenn mir jemand sagen könnte warum bei Ausführung von Prgramm nur 3 "z" ausgegeben werden.
Außerdem verstehe ich nicht ganz, wie die 3 Methoden von Programm (also f,g uhd h) Objekte von "Z" aufnehmen können, da "g" ja nur Objekte von "Y" aufnehmen kann und "f" nur von "X", was ja nur ein Interface ist.
Bei "g" könnte ich das ganze ja noch verstehen, da ja ein "Z" auch ein "Y" ist, da es davon abgeleitet ist, aber warum funktioniert das mit dem Interface "X"?
Danke
Gruß
ich habe folgende Klassen:
Code:
public interface X {
public String x();
}
Code:
ublic abstract class Y implements X{
public String toString() {
return "Y";
}
}
Code:
ublic class Z extends Y {
public String x() {
return "X";
}
public String toString() {
return "Z";
}
}
Code:
public class Programm {
static void f(X x) {
System.out.println(x);
}
static void g(Y y) {
System.out.println(y);
}
static void h(Z z) {
System.out.println(z);
}
public static void main(String[] args) {
f(new Z());
g(new Z());
h(new Z());
}
}
Es wäre nett, wenn mir jemand sagen könnte warum bei Ausführung von Prgramm nur 3 "z" ausgegeben werden.
Außerdem verstehe ich nicht ganz, wie die 3 Methoden von Programm (also f,g uhd h) Objekte von "Z" aufnehmen können, da "g" ja nur Objekte von "Y" aufnehmen kann und "f" nur von "X", was ja nur ein Interface ist.
Bei "g" könnte ich das ganze ja noch verstehen, da ja ein "Z" auch ein "Y" ist, da es davon abgeleitet ist, aber warum funktioniert das mit dem Interface "X"?
Danke
Gruß