hi habe folgende Vererbungshirarchie.
abstract class Tier
mit der Operation giblaut()
interface Zugmittel
mit der Operation gibZugleistung()
abstract class Huftier extends Tier implements Zugmittel
class Katze extends Tier
class Pferd extends Huftier
class Esel extends Huftier
class Traktor implements Zugmittel
also in worten:
Oberklasse ist die abstrakte Klasse Tier mit der Operation gibLaut(), diese hat die Unterklassen Katze (nicht abstrakt) und Huftier (Abstrakt). Huftier hat die unterklassen Esel und Pferd (beide nicht abstrakt). Die Klasse Huftier implementiert ein Interface namens ZugMittel mit der Operation Zugleistung(). Genauso wie die Klasse Traktor (nicht abstrakt).
Meine folgende aufgabe ist herauszufinden welche aussage korrekt ist und welche nciht und dies begründen. ich hoffe ihr könnt oben aus dem wirrwarr was erkennen .
also gegeben ist
Tier meinTier;
Esel meinEsel;
Zugmittel meinZugmittel;
folgende aussagen gibt es
meinTier = new Pferd();
System.out.println(meinTier.gibLaut());
System.out.println(meinTier.gibZugleistung());
meinTier = new Huftier(esel,5);
meinEsel = new Esel();
System.out.println(meinEsel.gibLaut());
System.out.println(meinEsel.gibZugleistung());
meinZugmittel = new Pferd();
System.out.println(meinZugmittel.gibLaut());
System.out.println(meinZugmittel.gibZugleistung());
hier mein bisherige Lösung:
meinTier = new Pferd();
meinEsel = new Esel();
System.out.println(meinTier.gibLaut());
System.out.println(meinEsel.gibLaut());
System.out.println(meinEsel.gibZugleistung());
System.out.println(meinZugmittel.gibZugleistung()); //die sind all richtig
meinTier = new Huftier(); // ich meine Tier ist ja eine abstrakte Klasse dann dürfte das doch keine Objekte erzeugen dürfen oder besonders da auch Huftier eine Abstrakte Klasse ist ?
System.out.println(meinTier.gibZugleistung()); // das geht nicht da die Oberklasse die Schnittstelle nicht sieht, und somit nicht zugreifen kann
System.out.println(meinZugmittel.gibLaut()); // geht nicht da, da Zugmittel ein interface ist und nur die Operationen kennt die es implementiert
meinZugmittel = new Pferd(); ?
ist das so korrekt oder habe ich was nciht bedacht
abstract class Tier
mit der Operation giblaut()
interface Zugmittel
mit der Operation gibZugleistung()
abstract class Huftier extends Tier implements Zugmittel
class Katze extends Tier
class Pferd extends Huftier
class Esel extends Huftier
class Traktor implements Zugmittel
also in worten:
Oberklasse ist die abstrakte Klasse Tier mit der Operation gibLaut(), diese hat die Unterklassen Katze (nicht abstrakt) und Huftier (Abstrakt). Huftier hat die unterklassen Esel und Pferd (beide nicht abstrakt). Die Klasse Huftier implementiert ein Interface namens ZugMittel mit der Operation Zugleistung(). Genauso wie die Klasse Traktor (nicht abstrakt).
Meine folgende aufgabe ist herauszufinden welche aussage korrekt ist und welche nciht und dies begründen. ich hoffe ihr könnt oben aus dem wirrwarr was erkennen .
also gegeben ist
Tier meinTier;
Esel meinEsel;
Zugmittel meinZugmittel;
folgende aussagen gibt es
meinTier = new Pferd();
System.out.println(meinTier.gibLaut());
System.out.println(meinTier.gibZugleistung());
meinTier = new Huftier(esel,5);
meinEsel = new Esel();
System.out.println(meinEsel.gibLaut());
System.out.println(meinEsel.gibZugleistung());
meinZugmittel = new Pferd();
System.out.println(meinZugmittel.gibLaut());
System.out.println(meinZugmittel.gibZugleistung());
hier mein bisherige Lösung:
meinTier = new Pferd();
meinEsel = new Esel();
System.out.println(meinTier.gibLaut());
System.out.println(meinEsel.gibLaut());
System.out.println(meinEsel.gibZugleistung());
System.out.println(meinZugmittel.gibZugleistung()); //die sind all richtig
meinTier = new Huftier(); // ich meine Tier ist ja eine abstrakte Klasse dann dürfte das doch keine Objekte erzeugen dürfen oder besonders da auch Huftier eine Abstrakte Klasse ist ?
System.out.println(meinTier.gibZugleistung()); // das geht nicht da die Oberklasse die Schnittstelle nicht sieht, und somit nicht zugreifen kann
System.out.println(meinZugmittel.gibLaut()); // geht nicht da, da Zugmittel ein interface ist und nur die Operationen kennt die es implementiert
meinZugmittel = new Pferd(); ?
ist das so korrekt oder habe ich was nciht bedacht
Zuletzt bearbeitet: