jeudi 23 avril 2015

Bei Objekt der Oberklasse auf Unterklassenmethode zugreifen?

Hallo,

ich stehe grade vor einem kleinen Problem, hab hier mal ein ähnliches Beispiel (das zwar keinen Sinn ergibt aber meine Frage hoffentlich verdeutlicht) erstellt:

Ich habe eine abstrakte Klasse "Produkt", in dieser befindet sich nur eine abstrakte Methode "getPreis".
Außerdem habe ich eine Unterklasse "Computermaus", in dieser habe ich die Variablen name und preis.
Zudem habe ich eine Klasse "Student", dieser hat eine Variable "maus", vom Typ Produkt.
Im Konstruktor von Student wird Name, Mausname und Mauspreis (klingt sinnlos, ist nur für dieses Beispiel relevant) übergeben.
Java Code:

  1.  
  2. public Student(String name, String mausname, int preis){
  3. this.name = name;
  4. maus = new Computermaus(mausname, preis);
  5. }


In einer Testklasse erstelle ich ein Objekt: "Student student1 = new Student("max", "markenname", 30);".
Anschließend möchte ich in der Klasse Student eine Methode erstellen, mit der ich die Variable "preis" des objekts "maus" erhoehen kann. (auch hier: ergibt keinen Sinn, geht nur um's Prinzip)

Hierfür wäre eine Variante:
Java Code:

  1. public void erhoehePreis(int erhoehung){ maus.setPreis(maus.getPreis()+erhoehung);}
oder eine andere Variante:
Java Code:

  1. public void erhoehePreis(int erhoehung){ maus = new Computermaus(maus.getName(), maus.getPreis()+erhoehung);}


Hier funktioniert nur die erste Variante. Grund: maus.getName() ist nicht zulässig, da die Methode getName() in der Oberklasse Produkt nicht definiert ist. In der Aufgabe, die ich versuche zu lösen, ist allerdings in der Oberklasse nur eine Methode definiert die mir nicht weiterhilft. Das bedeutet, ich könnte in besagtem Fall weder auf getPreis() noch auf getName() zugreifen, ohne die Methoden in der Oberklasse zu definieren. Allerdings darf ich nach Aufgabenstellung die Oberklasse nicht verändern.

Ich hoffe das war einigermaßen verständlich. Ich möchte also eine Methode "erhoehePreis" einführen, kann aber nicht auf maus.getPreis() zugreifen, da es in der Oberklasse nicht definiert ist. Die Oberklasse darf ich nicht verändern.


Bei Objekt der Oberklasse auf Unterklassenmethode zugreifen?

0 commentaires:

Enregistrer un commentaire