0 Daumen
487 Aufrufe

Problem:

"Unterklasse" ist die Unterklasse von Klasse "Oberklasse" und Unterklasse implementiert die klasse "Interface" mit der Methode "getprotein()" . Die Oberklasse implementiert nicht das Interface. Außerdem dürfen die Oberklasse und Unterklasse nicht abstract sein.

Wie kann ich in einer neuen Klasse "a" mit einer ArrayListe aus Objekten aus den Konstruktor der Oberklasse das Ergebnis aus der Unterklasse  getProtein() bekommen?

Avatar von

1 Antwort

+1 Daumen

Wenn wir nicht gerade C++ betrachten, wo eine Mehrfachvererbung möglich ist, heißt es, ich implementiere ein Interface. Das ist keine Klasse, sondern ein Interface.

Ein Interface gibt nur an, welche Attribute die implementierenden Klassen enthalten müssen und welche Methoden implementiert werden müssen. Eine abstrakte Klasse oder allgemein Superklassen können bzw. müssen bereits Methoden (zumindest teilweise) implementiert haben.


Die Lösung sollte wie folgt aussehen:


public Interface IInterface{
Protein getProtein();
}

public class Oberklasse{
public Oberklasse(/*Übergabe*/){
//Hier steht der Konstruktor
Unterklasse u = new Unterklasse();
Protein p = u.getProtein();
//speichere p jetzt als Attribut und gib es in einer anderen Methode zurück
}
}

public class Unterklasse extends Oberklasse implements IInterface{
public Unterklasse(){
//Hier steht der Konstruktor
}
Protein getProtein(){
return this.protein;
}
}

public class A {
public static void main(){
//ersetze hier die Anzahl der Indizes
Object[] arr = new Object[10];
for(int i=0; i<10; i++){
arr[i] = new Oberklasse(/*Übergabe*/);
}
}
}

Mir ist der Sinn der Klassen-Assoziationen nicht ganz klar, aber im Grunde so:

Erstelle in A ein Array, befülle es mit Proteinen, indem du den Konstruktor von Oberklasse aufrufst, der wiederum den Konstruktor von Unterklasse aufruft und in diesem dann die Methode getProtein, und implementiere in Oberklasse eine Methode getProtein(), die das Attribut vom Objekt Unterklasse zurückgibt.

Vielleicht präzisierst du nochmal, was du genau meintest, dann kann ich ggf. näher erläutern.


Beste Grüße

Felix

Avatar von

Ein anderes Problem?

Stell deine Frage

Willkommen bei der Stacklounge! Stell deine Frage einfach und kostenlos

x
Made by a lovely community