Bei Java Konstruktor in einem andern Konstruktor verwenden |
Lycaner
Eroberer
Dabei seit: 17.02.2013
Beiträge: 56
|
|
Bei Java Konstruktor in einem andern Konstruktor verwenden |
|
Ich muss ein Programm in Java schreiben, bei dem ich ein Konstruktor selber schreibe und später habe ich eine zweite Klasse, wo ich ein neune Konstruktor schreiben muss. Bei dem neuen muss ich den alten auch verwenden und ich weiß nicht wie das gehen soll.
z.B.
public class persönlicheDaten{
public PersönlicheDaten(String vorname, String nachname){
this.vorname=vorname;
this.nachname=nachname;
}
.............
......
...
}
/**************andere Klasse**********/
public class persönlicheDatensatz{
public persönlicheDatensatz(PersönlicheDaten(), int gebTag, int gebMonat, int gebJahr){
this.PersönlicheDaten=PersönlicheDaten;
this.gebTag=gebTag;
this.gebMonat=gebMonat;
this.gebJahr=geb.Jahr;
}
..........
Wie muss man es richtig schreiben?
|
|
28.03.2013 08:32 |
|
|
|
Ist zwar C#, sollte aber so oder sehr ähnlich auch in Java funktionieren:
code: |
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
|
public class persoenlicheDaten
{
public string vorname, nachname;
public persoenlicheDaten(string vorname, string nachname)
{
this.vorname = vorname;
this.nachname = nachname;
}
}
public class persoenlicherDatensatz
{
public persoenlicheDaten per;
public int gebTag, gebMonat, gebJahr;
public persoenlicherDatensatz(persoenlicheDaten per, int gebTag, int gebMonat, int gebJahr)
{
this.per = per;
this.gebTag = gebTag;
this.gebMonat = gebMonat;
this.gebJahr = gebJahr;
}
public persoenlicherDatensatz(string vorname, string nachname, int gebTag, int gebMonat, int gebJahr)
{
this.per = new persoenlicheDaten(vorname,nachname);
this.gebTag = gebTag;
this.gebMonat = gebMonat;
this.gebJahr = gebJahr;
}
}
//Und der Aufruf:
persoenlicheDaten pd = new persoenlicheDaten("Hans", "Meier");
persoenlicherDatensatz pds = new persoenlicherDatensatz(pd, 1, 1, 1970);
//bzw. mit anderem Konstruktor:
persoenlicherDatensatz pds = new persoenlicherDatensatz("Hans", "Meier", 1, 1, 1970);
|
|
__________________ Syntax Highlighting fürs Board (Link)
|
|
28.03.2013 09:37 |
|
|
Lycaner
Eroberer
Dabei seit: 17.02.2013
Beiträge: 56
|
|
13: public persoenlicheDaten per;
14:public int gebTag, gebMonat, gebJahr;
Was sollen diese Zeilen bedeuten?
Ich dachte erst, dass die Zeile 13 die Methode aufruft aber die heißt anders.
Und wenn man du in Zeile 14 die Variabel mit dem Typ (int) deklarierst, ist das dann nicht doppelt weil in Zeile 15 wird das noch mal gemacht.
Ist ab Zeile 23, das zweite Beispiel , wie man es machen kann?
|
|
28.03.2013 11:40 |
|
|
|
In Zeile 13/14 sind die in der Klasse verwendeten Variablen.
In Zeile 15-21 ist ein Konstruktor, der die Klasse persoenlicheDaten übergeben bekommt.
Aufruf ist in Zeile 33/34.
In Zeile 23-30 ist ein anderen Konstruktor, der statt persoenlicheDaten zwei strings annimmt und diese dann selbst (Zeile 25) in persoenlicheDaten umwandelt.
Aufruf dazu in Zeile 36
Und ich habe keine Variable doppelt deklariert:
In Zeile 13/14 (übrigens auch in Zeile 3) sind die nach außen sichtbaren Variablen, die man abfragen/ändern kann, z.B. mit:
string vor = pds.per.vorname;
Innerhalb der Klasse wird mit this.Variablenname darauf zugegriffen.
Mit this.gebTag = gebTag; sage ich also, dass das nach außen Sichtbare den übergebenen Wert annimmt.
__________________ Syntax Highlighting fürs Board (Link)
|
|
28.03.2013 11:56 |
|
|
Lycaner
Eroberer
Dabei seit: 17.02.2013
Beiträge: 56
|
|
Ok danke.
Kannst du mir vielleicht sagen, wie ich die Felder abrufen/fühlen kann, wenn ich ein Datenfeld mit persoenlicherDatensatz erzeug habe.
z.B.
persoenlicherDatensatz Datenfeld[]=new persoenlicherDatensatz[10];
Muss ich dann sowas schreiben wie:
Datenfeld[0]=new Datenfeld("Hans", "Meier", 1, 1, 1970);
|
|
28.03.2013 13:27 |
|
|
|
nicht ganz:
code: |
1:
2:
|
persoenlicherDatensatz[] Datenfeld = new persoenlicherDatensatz[10];
Datenfeld[0] = new persoenlicherDatensatz("Hans", "Meier", 1, 1, 1970); |
|
Datenfeld ist ja aus der Klasse persoenlicherDatensatz. Außerdem hast du beim Initialisieren das Arrays die eckigen Klammern falsch platziert.
__________________ Syntax Highlighting fürs Board (Link)
|
|
28.03.2013 13:50 |
|
|
Lycaner
Eroberer
Dabei seit: 17.02.2013
Beiträge: 56
|
|
Bei mir funktioniert das irgendwie nicht. Kommt immer ein Fehler.
cannot find symbol
|
|
28.03.2013 17:07 |
|
|
|
Um das ganze unter Java zum Laufen zu bringen, musste ich string zu String machen, also groß schreiben, ansonsten sollte das alles passen, bei mir läuft es zumindest.
In welcher Zeile tritt der Fehler denn bei dir auf?
__________________ Syntax Highlighting fürs Board (Link)
|
|
28.03.2013 22:39 |
|
|
Lycaner
Eroberer
Dabei seit: 17.02.2013
Beiträge: 56
|
|
public class Test5 {
public static void main(String[] args) {
1: Test7[] datenfeld= new Test7[10];
2: datenfeld[1] = new Test7("Hans", "Meier", 1, 1, 1970);
}
Also in dem Hauptprogramm tritt der Fehler auf(Zeile 1 und Zeile 2).
Ich habe ein neues Projekt angelegt und das rein kopiert, was du geschrieben hast. Ich wollt das Programm nicht verunstalte und mehr kaputt mache als es schon so ist. Deswegen habe ich die Klassen umbenannt. In den Klassen zeigt mir kein Fehler an. Aber in der Hauptklasse funktioniert nichts.
C war in der Hinsicht viel leichter, wo man alles in ein Fenster schreiben konnte(
|
|
29.03.2013 00:05 |
|
|
Lycaner
Eroberer
Dabei seit: 17.02.2013
Beiträge: 56
|
|
Erst mal, danke für deine Mühe.
Ich habe genauso abgetippt und das hat nur funktioniert, als ich den zweiten Konstruktor eingefügt habe.
Leider steht in der Aufgabenstellung, dass man den ersten Konstruktor verwenden soll. Und wenn ich das mache, kann ich kein Array erzeugen( zu minderst da taucht der erster Fehler auf(
|
|
29.03.2013 10:43 |
|
|
|
meinst du so?
Datenfeld[0] = new persoenlicherDatensatz(new persoenlicheDaten("Hans", "Meier"), 1, 1, 1970);
falls nein, bitte ich um den genauen Wortlaut der Aufgabe, weil ich immer noch nicht weiß, was du vorhast.
__________________ Syntax Highlighting fürs Board (Link)
|
|
29.03.2013 11:06 |
|
|
Lycaner
Eroberer
Dabei seit: 17.02.2013
Beiträge: 56
|
|
Aufgabe 2b.
Entwerfen Sie einen geeigneten Konstruktor, der alle persönlichen Daten und Datensatz eines Fussbalspielers als Parameter erhält.
Unter den persönlichen Daten habe ich 7 Attribute und im dem Datensatz kommen 6 weiter Attribute hinzu.
Deswegen wollte ich den ersten Konstruktor verwenden, weil dann das Programm viel kürzer wird.
|
|
30.03.2013 16:54 |
|
|
Lycaner
Eroberer
Dabei seit: 17.02.2013
Beiträge: 56
|
|
Aufgabe 2c.
Die Methode zeigeSpielerdaten() soll alle persönlichen und Spielerdaten
anzeigen. Zur Anzeige der persönlichen Daten soll die Methode zeigeDaten
der Klasse PersoenlicheDaten aufgerufen werden.
Die Methode zeigeDaten habe ich programmiert und dann wollte ich diese Methode in der Methode PersönlicheDaten abrufen aber es kommt immer ein Fehler vor, obwohl ich den abruf einige Programm im Internet gesehen habe(
public void zeigeDaten() {
System.out.println("Vorname und Nachname: "+vorname+" "+nachname);
}
public void zeigeSpielerdaten() {
System.out.println(zeigeDate per()); diese Zeile wird rot unterstrichen(
System.out.println("");
}
Die zweite Methode steht in der anderen Klasse als die erste Methode.
|
|
30.03.2013 17:27 |
|
|
|
Versuche mal per.zeigeDaten();
code: |
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
|
package meinPaket;
public class main {
public static void main(String[] args) {
persoenlicherDatensatz[] Datenfeld = new persoenlicherDatensatz[10];
Datenfeld[0] = new persoenlicherDatensatz(new persoenlicheDaten("Hans", "Meier"), 1, 1, 1970);
Datenfeld[0].zeigeDatensatz();
}
}
package meinPaket;
public class persoenlicheDaten {
public String vorname, nachname;
public persoenlicheDaten(String vorname, String nachname)
{
this.vorname = vorname;
this.nachname = nachname;
}
public void zeigeDaten(){
System.out.println("Vorname und Nachname: "+vorname+" "+nachname);
}
}
package meinPaket;
public class persoenlicherDatensatz {
public persoenlicheDaten per;
public int gebTag, gebMonat, gebJahr;
public persoenlicherDatensatz(persoenlicheDaten per, int gebTag, int gebMonat, int gebJahr)
{
this.per = per;
this.gebTag = gebTag;
this.gebMonat = gebMonat;
this.gebJahr = gebJahr;
}
public persoenlicherDatensatz(String vorname, String nachname, int gebTag, int gebMonat, int gebJahr)
{
this.per = new persoenlicheDaten(vorname,nachname);
this.gebTag = gebTag;
this.gebMonat = gebMonat;
this.gebJahr = gebJahr;
}
public void zeigeDatensatz(){
per.zeigeDaten();
}
} |
|
__________________ Syntax Highlighting fürs Board (Link)
|
|
30.03.2013 17:54 |
|
|
|