Klassen wiederverwenden

alle adressen kommen aus einer extra Klasse, die Adresse.java genannt ist.

public class Adresse {
// Instanzvariablen
private String strasse;
private String hausNr;
private String postleitzahl;
private String stadt;

// Konstruktor
public Adresse(String strasse, String hausNr,
String postleitzahl, String stadt) {
this.strasse = strasse;
this.hausNr = hausNr;
this.postleitzahl = postleitzahl;
this.stadt = stadt;
}

// Methoden
public String getStrasse() {
return strasse;
}

public String getHausNr() {
return hausNr;
}

public String getPostleitzahl() {
return postleitzahl;
}

public String getStadt() {
return stadt;
}

public void setStrasse(String s) {
strasse = s;
}

public void setHausNr(String s) {
hausNr = s;
}

public void setPostleitzahl(String s) {
postleitzahl = s;
}

public void setStadt(String s) {
stadt = s;
}

public void print() {
System.out.println("Strasse: " + strasse + " " + hausNr);
System.out.println("Stadt: " + postleitzahl + " " + stadt);
}
}

name und andrede kommt aus der Klasse Kunde, Datei Kunde.java

//Klasse Kunde anlegen
public class Kunde {


//Klassenvariable
static int count = 0; //Grund: Eine Klassenvariable count vom Typ int soll die Anzahl der bereits erzeugten
//Instanzen der Klasse Kunde zählen.


//Instanzvariable
private int kundennummer;
private String name;
private String anrede;
private Adresse adresse;

// Getters und Setters (Grund: Alle Variablen sollen von außen nur über Methoden der Klasse les- und änderbar sein. Die
//Kundennummer soll nicht veränderbar sein.
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}


public String getAnrede() {
return anrede;
}
public void setAnrede(String anrede) {
this.anrede = anrede;
}


public String getAdresse() {
return adresse;
}
public void setAdresse(String adresse) {
this.adresse = adresse;
}


//Konstruktor für Anzahl der Instanzen
public Kunde() {
Kunde.count++;
kundennummer = count;

}

//Konstruktor für Initialisierung der Instanzvariablen
public Kunde (String newName, String newAnrede, String newAdresse) {
this.name = newName;
this.anrede = newAnrede;
this.adresse = newAdresse;
}


//Methode Print
public void zeigeAttribute() {
System.out.println("Kundennummer:" + kundennummer);
System.out.println("Name:" + name);
System.out.println("Anrede:" + anrede);
System.out.println("Adresse:" + adresse);

}
}

Und dann gibts eben noch die AuslandsKunden, in AuslandsKunden.java. Die möchte ich gerade erstellen.
 
Zuletzt bearbeitet:
Hallo,

der Konstruktor muss so aussehen:
Code:
public AuslandsKunde (String name, String anrede, String adresse, String newLand)
    {
       super(name, anrede, adresse); // Initialisierung des Konstruktors 
       this.land = newLand;
        }
denn name, anrede und adresse musst du übergeben.
 
achja,..... die Übergabe der Variablen steht in Klammern nicht umgekehrt.....

bin schon ganz dumm im Kopf-.....

noch eine Frage habe ich........ man kann doch nachdem man eine Klasse umgewandelt hat auch als Datentyp für eine Variable verwenden. Mir geht es darum, dass in der Datei Adresse.java eine Klasse Adresse angelegt wurde. Diese Klasse möchte ich in der Datei Kunde.java als Datentyp für die Variable Adresse hinterlegen. Ich weiss nur nicht genau, wie ich das machen muss.

ich hab noch was vergessen, denke ich....

Code:
//Paketzuordnung
package Adressdatenbank;

import Adressdatenbank.*;
//Klasse Kunde anlegen
public class Kunde {
   //Klassenvariable
   static int count = 0; //Grund: Eine Klassenvariable count vom Typ int soll die Anzahl der bereits erzeugten
   //Instanzen der Klasse Kunde zählen. 
   //Instanzvariable
   private int kundennummer;
   private String name;
   private String anrede;
   private Adresse adresse;
 
Hallo,

du änderst erstmal in Kunde

Code:
  private String adresse;
in
Code:
  private Adresse adresse;

und änderst auch die Getters und Setters.

und
Code:
  public AuslandsKunde (String name, String anrede, Adresse adresse, String newLand)
      {
         super(name, anrede, adresse); // Initialisierung des Konstruktors 
         this.land = newLand;
          }
oder
Code:
 public AuslandsKunde (String name, String anrede, String strasse, String hausNr, String plz, String ort ,String newLand)
       {
          super(name, anrede, new Adresse(strasse,hausNr,plz,ort)); // Initialisierung des Konstruktors 
          this.land = newLand;
           }
 
wenn ich die genannten änderungen in Kunde.java ändere, gibt es einen fehler beim übersetzen


javac Kunde.java
Kunde.java:18: cannot resolve symbol
symbol : class Adresse
location: class Adressdatenbank.Kunde
private Adresse adresse;
^
Kunde.java:39: cannot resolve symbol
symbol : class Adresse
location: class Adressdatenbank.Kunde
public void setAdresse(Adresse adresse) {
^
Kunde.java:51: cannot resolve symbol
symbol : class Adresse
location: class Adressdatenbank.Kunde
public Kunde (String name, String anrede, Adresse adresse) {
^
3 errors

Die Klasse Adresse in Adresse.java übersetzt sich ohne Fehler, dort habe ich dann auch die Adresse.class in dem gleichen Verzeichnis
 
jo, die arbeitest also mit packages!

Dann musst du in Auslandskunde erstmal das package Adressdatenbank importieren.
oder du sagst folgendes:

class Auslandskunde extends Adressdatenbank.Kunde

Dann immer daran denken, es muss ein packages sind verzeichnisse! Sprich wenn du das Adressdatenbank package hast musst dein CLASSPATH auf ein Verzeichniss zeigen, welches ein Adressdatenbank verzeichnis hat und darunter sollten die .class dateien stehen.

Gruss
Torsten
 
ok, ich hab ein Verzeichnis Adressdatenbank im Verzeichnis 07, das wiederum im Verzeichnis Privat auf d:\

also d:\Privat\07\Adressdatenbank\

dort befinden sich diese Java Dateien

mein Classpath

D:\Privat\07\Adressdatenbank>set classpath
Classpath="d:\Privat\07\
classpath ="D:\Privat\07\Adressdatenbank"

nun rufe ich die Dateien auf, zuerst einmal Adresse.java
D:\Privat\07\Adressdatenbank>javac Adresse.java
funktioniert.
dann Kunde.java
D:\Privat\07\Adressdatenbank>javac Kunde.java
Fehler
Kunde.java:18: cannot resolve symbol
symbol : class Adresse
location: class Adressdatenbank.Kunde
private Adresse adresse;
^
Kunde.java:39: cannot resolve symbol
symbol : class Adresse
location: class Adressdatenbank.Kunde
public void setAdresse(Adresse adresse) {
^
Kunde.java:51: cannot resolve symbol
symbol : class Adresse
location: class Adressdatenbank.Kunde
public Kunde (String name, String anrede, Adresse adresse) {
^
3 errors

und dann noch Auslandskunde, welche aber ja nicht funktionieren kann.... da Kunde auch noch nicht funktioniert hat.

D:\Privat\07\Adressdatenbank>javac AuslandsKunde.java
Fehler
AuslandsKunde.java:8: cannot resolve symbol
symbol : class Kunde
location: package Adressdatenbank
public class AuslandsKunde extends Adressdatenbank.Kunde{
^
AuslandsKunde.java:25: cannot resolve symbol
symbol : class Adresse
location: class Adressdatenbank.AuslandsKunde
public AuslandsKunde (String name, String anrede, Adresse adresse, String lan
d) {
^
2 errors
 
Edit:

okay, jetzt muss ich sorry sagen, mein fehler, du hattest es ja schon richtig importiert,

hast du auch die Klasse Adresse in dem Package Adressdatenbank drin


Gruss,

Torsten
 
Zurück