Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
also habe hier die Main, in der 3 Objekte erstellt werden:
Java:
public class Person_Hauptprogramm {
public static void main(String[] args)
{
Person A = new Person();
A.name = "Hirsch";
A.vorname = "Harry";
A.alter = 35;
Person B = new Person();
B.name = "Wachtel";
B.vorname = "Willi";
B.alter = 54;
Person C = new Person();
C.name = "Kron";
C.vorname = "Maria";
C.alter = 35;
}
}
diese Objekte sollen in einer anderen Klasse ausgedruckt werden:
Java:
public class Person {
String name;
String vorname;
int alter;
Person (String Vorname, String Name, int Alter)
{
this.name = Name;
this.vorname = Vorname;
this.alter = Alter;
}
void print()
{
System.out.print(name+" "+vorname+" "+alter+" ");
}
}
die Fehlermeldung:
The constructor Person() is undefined
Bitte um Nachsicht, habe bisher noch nicth mit Konstruktoren gearbeitet, ist wahrscheinlich ein einfacher Syntaxfehler
Das Problem ist, dass du im main den Konstruktor Person() verwenden willst, den du in der Klasse Person aber nicht deklariert hast.
Du müsstes es so machen:
Java:
Person A = new Person("Hirsch","Harry",35);
Oder du definierst einen neuen Konstruktor Person(), der dann einfach allen Variablen name, vorname, alter einen Default-Wert zuweist.
Einfach ausgedrückt sobald du einen Konstruktur angibst der vom argumentlosen Konstruktor abweicht, gibt es den "Standardkonstruktor" nicht mehr. Wenn du also eine Person ohne übergebene Parameter konstruieren möchtest musst du den Standardkonstruktor explizit angeben.
Ich würde die print() Methode allerdings nicht im Konstruktor aufrufen und auch nicht in der Klasse selber. Sondern von außen, nachdem du ein Objekt der Klasse Person erstellt hast.
Java:
//Kann z.B. in der Main Methode stattfinden
Person p1 = new Person("Hans","Wurst",27);
p1.print();
Das würde ich nicht machen. print() soll allem Anschein nach einige interne Attribute ausgeben. Wahrscheinlich exisitiert die Funktion nur zu Debug-Zwecken. Aber die toString() Methode liefert einen String zurück. Wenn schon, könnte man toString() überschreiben und in print dann ausgeben, was toString() liefert.
Auch das print() im Konstruktor auszurufen macht Sinn, wenn du wissen willst, welche Objekte instanziert werden. Dann weisst du nänlich auch, wo du es dann rausnehmen musst, wenn du es nicht mehr willst. Besser, als wenn du später deinen ganzen Source Code durchsuchen musst, wo du noch irgendwelche prints drin hast.