Objectorientierung, Array und Vererbung

Windows10

Bekanntes Mitglied
Ich schicke euch jetzt die Fehlermeldung und die Klassen die ihr braucht, denn ich finde leider meinen Fehler nicht!!

Fehlercode in der Firmen-Klasse bei folgendem Code-Teil: Code:
Java:
                Out.println(arr[i]=a.print);
Fehlermeldung bei diesem Code: cannot find Symbol-variable print

Sonstige benötigte Hinweise zur Fehlerfindung:

Java:
public class Arbeiter extends Mitarbeiter
{
    double fixum;
    double stunden;
    double lohnProStunde;
    String firma;
    String status;
    public Arbeiter(String vvname, String nname, int personalnummer, double fixum, double stunden, double lohnProStunde, String firma, String status)
    {
        super(vvname,nname,personalnummer);
        this.fixum=fixum;
        this.stunden=stunden;
        this.lohnProStunde=lohnProStunde;
        this.firma=firma;
        this.status=status;
    }
public void print()
    {
        super.print();
        double gehalt=getMonatslohn();
        Out.println("Monatslohn: "+ gehalt);
        Out.println("Firma: " + firma);
        Out.println("Status: " + status);
    }

Java:
public Mitarbeiter[] personenEinstellen(String vvname, String nname, int personalnummer, double fixum, double praemie, double stunden, double lohnProStunde, String firma, String status)
    {
        Out.println("Wie lange soll das Array sein? Zahl über 5 und unter 10!!");
        int size=In.readInt();
        Mitarbeiter[] arr=new Mitarbeiter[size];
        for (int i=0;i<arr.length;i++)
        {
            Mitarbeiter a=new Arbeiter(vvname,nname,personalnummer,fixum,stunden,lohnProStunde,firma,status);
            if(a instanceof Arbeiter)
            {
                Out.println(arr[i]=a.print);
            }
        }
        return arr;
Nur als Hinweis: Es sind nicht die kompletten Klassen, nur die Methoden, die vielleicht zur Fehlerbehebung helfen können!!

Wenn euch noch was abgeht, bitte meldet euch mit euren Fragen!!

Danke!!
 

Windows10

Bekanntes Mitglied
Was genau willst du da machen ?
Was in der Methode bei
Code:
print()
in der Arbeiter-Klasse steht in das Array schreiben!!
Java:
 Mitarbeiter a=new Arbeiter(vvname,nname,personalnummer,fixum,stunden,lohnProStunde,firma,status);
hab ich ja eine Arbeiterobjekt mit dem Namen a angele!! Von diesem Objekt will ich jetzt die
Code:
print()
-Methode von der Klasse Arbeiter in das Array an die Stelle i schreiben, aber es erzeugt ja den Fehler
cannot find Symbol-variable print!!
 

Windows10

Bekanntes Mitglied
Ich würde in das Array nur die Arbeiter packen:

Wofür brauchst du die Informationen dadrinne ? Kannst du ja auch nachher in einer for Schleife für jeden Arbeiten ausgeben
for(...;...;...){
Out.println(arr[i].print);
}
So wie ich es mache ist es aber Teil der Aufgabe, man muss das Array mit den Arbeitern befüllen und dann zurückgeben!!
 

mrBrown

Super-Moderator
Mitarbeiter
Für einen Methodenaufruf müssen Klammern hinterm Namen stehen, also arr=a.print()

Edit:
Das a instanceof Arbeiter kannst du dir sparen, jeder Mitarbeiter ist zwingend ein Arbeiter. Wäre es nicht so, wäre der Methodenaufruf nicht so möglich, und es gäbe schon einen Fehler zur Compilezeit.
instanceof braucht man hauptsächlich zum casten - da kann man zur Compilerzeit nicht immer wissen, welchen Types es ist.
 
Zuletzt bearbeitet:

Windows10

Bekanntes Mitglied
Aber mit
Java:
arr[i] = a;
befüllst du es doch mit Arbeitern ?
Wenn ich es so mache steht im Array Unbenannt.PNG ,es soll aber das drinnen stehen, was in der Methode print() in der Klasse Arbeiter steht.

Folgendes sollte zum Beispiel drinnen stehen an der Arraystelle i:
Mitarbeiter 1 : Philipp Baumgartner
Monatslohn: 1000,00
Firma: Microsoft
Status: Manager
 

mrBrown

Super-Moderator
Mitarbeiter
Seit wann kann man Arrays mit Methoden füllen, die den Rückgabewert void habeen ? o_O
Garnicht, ein Methodenaufruf braucht trotzdem Klammern, auch wenn er void ist.


Wenn ich es so mache steht im Array Anhang anzeigen 8903 ,es soll aber das drinnen stehen, was in der Methode print() in der Klasse Arbeiter steht.

Folgendes sollte zum Beispiel drinnen stehen an der Arraystelle i:
Mitarbeiter 1 : Philipp Baumgartner
Monatslohn: 1000,00
Firma: Microsoft
Status: Manager

Deine Methode gibt nichts zurück, es kann also auch nichts in das Array geschrieben werden.
Aktuell ist dein Array auch ein Array von Mitarbeitern, du kannst es also auch nur Mitarbeiter füllen.

Um Strings in das Array zu schreiben, müsstest du daraus ein Array von Strings machen, und die print-methode einen String zurückgeben lassen, den du in print() passend füllst.
 

Neue Themen


Oben