Bin in einem Buch auf folgendes Programm gestoßen:
Als Ausgabe erhlät man:
5 class kapitel8.Akte
7 class kapitel8.Clowns
7 class kapitel8.Von76
Das ganze verwirrt mich total.
Wenn ich das richtig verstehe wird zunächst ein Nasen-Array der Länge 3 erstellt.
Nasen ist aber ein Interface. Wie kann man dann ein Array davon erstellen? Also Objekte gehen nicht - Arrays jedoch schon?
Im Interface steht ein Methodenaufruf. Der hat jedoch keine Bedeutung, richtig?
Nun füllt man das Array mit Objektreferenzen der verschiedensten Klassen und ruft mittels for-Schleife jeweils die
und die Methode
auf und gibt diese auf dem Bildschirm aus.
Die Klasse Akte erbt von Picasso und überdeckt(?) die
der Super(?)/Oberklasse, darum wird auch 5 ausgegeben anstelle von 7.
Die Klasse Clowns erbt von Picasso. Eben auch die iMethode() mit der
und daher kann man auf Clowns die Methode aufrufen. Picasso selbst ist abstrakt, also gibt es davon keine Instanzen.
Sie implementiert das Interface Nasen (interfaces verlangen nach implements, nicht nach extends?).
Interfaces sind nur dazu da um das Deadly Diamond of Death der abstrakten Klassen zu verhindern?
Java:
package kapitel8;
public class Von76 extends Clowns{
public static void main (String[] args){
Nasen[] i = new Nasen[3];
i[0] = new Akte();
i[1] = new Clowns();
i[2] = new Von76();
for (int x = 0; x < 3; x++){
System.out.println(i[x].iMethode()+" "+i[x].getClass());
}
}
}
Java:
package kapitel8;
interface Nasen {
public int iMethode();
}
Java:
package kapitel8;
abstract class Picasso implements Nasen{
public int iMethode(){
return 7;
}
}
Java:
package kapitel8;
class Akte extends Picasso{
public int iMethode(){
return 5;
}
}
Java:
package kapitel8;
public class Clowns extends Picasso{
}
Als Ausgabe erhlät man:
5 class kapitel8.Akte
7 class kapitel8.Clowns
7 class kapitel8.Von76
Das ganze verwirrt mich total.
Wenn ich das richtig verstehe wird zunächst ein Nasen-Array der Länge 3 erstellt.
Nasen ist aber ein Interface. Wie kann man dann ein Array davon erstellen? Also Objekte gehen nicht - Arrays jedoch schon?
Im Interface steht ein Methodenaufruf. Der hat jedoch keine Bedeutung, richtig?
Nun füllt man das Array mit Objektreferenzen der verschiedensten Klassen und ruft mittels for-Schleife jeweils die
Code:
iMethode()
Code:
getClass()
Die Klasse Akte erbt von Picasso und überdeckt(?) die
Code:
iMethode()
Die Klasse Clowns erbt von Picasso. Eben auch die iMethode() mit der
Code:
return 7
Sie implementiert das Interface Nasen (interfaces verlangen nach implements, nicht nach extends?).
Interfaces sind nur dazu da um das Deadly Diamond of Death der abstrakten Klassen zu verhindern?