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