2017-05-19 2 views
-3

Wenn ich versuche, eine Variable aus der Oberklasse "arxiki" in einer Unterklasse zu verwenden, wird der Wert null zurückgegeben. Grundsätzlich speichere ich die Objekte in einer ArrayList, und ich möchte sie drucken, also verwende ich toString() -Methode. Ich habe die Variablen initialisiert, super() in der Unterklasse verwendet, so dass ich nicht finden kann, was falsch ist.Die vererbte Java-Variable gibt null zurück

public class arxiki{ 
private String onoma; 
private int pagio; 
public arxiki(String onoma, int pagio){ 
    this.onoma=onoma; 
    this.pagio=pagio; 
} 
public arxiki(){ 
} 
public arxiki(String onoma){ 
} 
public String getOnoma(){ 
    return onoma; 
} 
public int getPagio(){ 
    return pagio; 
} 

public String toString() { 
    return "\nOnoma: "+getOnoma(); 
} 

Die Unterklasse von „arxiki“

public class symvolaio extends arxiki{ 
private int kodikos; 
private String onomateponimo; 
private String tilefono; 
private String imerominia; 
private String troposexoflisis; 
public symvolaio(String onoma,int kodikos, String onomateponimo, String tilefono, String imerominia, String troposexoflisis){//symvolaioconstructor 
    super(onoma); 
    this.kodikos=kodikos; 
    this.onomateponimo=onomateponimo; 
    this.tilefono=tilefono; 
    this.imerominia=imerominia; 
    this.troposexoflisis=troposexoflisis; 
} 
public symvolaio(int kodikos){ 
} 
public int getKodikos(){ 
    return kodikos; 
} 
public String getOnomateponimo(){ 
    return onomateponimo; 
} 
public String getTilefono(){ 
    return tilefono; 
} 
public String getImerominia(){ 
    return imerominia; 
} 
public String getTroposexoflisis(){ 
    return troposexoflisis; 
} 

public String toString(){ 
    return super.toString()+", Kodikos: "+getKodikos()+", Onomateponimo: "+getOnomateponimo()+", Tilefono: "+getTilefono()+", Imerominia Enarxis: "+getImerominia()+", Tropos Exoflisis: " + getTroposexoflisis(); 
} 
} 

Die nächsten Codebeispiele sind nicht ganze Klassen, sondern die Teile, die den zuvor erwähnten classes.Here verwenden ist der Teil, wo ich die Arraylist füllen

 ArrayList<symvolaio> listasymvolaion= new ArrayList<>(); 
    listasymvolaion.add(new symvolaio("symv15",1,"Babis Sougias", "6958349125"," 15/2/2013", "Metrita")); 
    listasymvolaion.add(new symvolaio("symv25",2,"Alexandros Kontopidis", "6942579632", "06/9/2015", "Pistotiki karta")); 
    listasymvolaion.add(new symvolaio("kart20",3,"Michael Santana", "69134865936", "25/12/2012", "Pistotiki karta")); 
    listasymvolaion.add(new symvolaio("kart30",4,"Kostas Mpalas", "6927941825", "23/5/2016", "Metrita")); 
    listasymvolaion.add(new symvolaio("int5",5,"Maria Imalap", "6942069880", "09/4/2014", "Pistotiki karta")); 
    listasymvolaion.add(new symvolaio("int10",6,"Gustav II Adolph", "696111632", "30/10/1611", "Metrita")); 

Und schließlich der Teil einer Schleife, wo die Objekte innerhalb des Array gedruckt

Iterator <symvolaio> iterator = listasymvolaion.iterator(); 
      while (iterator.hasNext()){ 
       System.out.printf(listasymvolaion.get(k).toString()); 
       k++; 
+2

Sie _are_ Aufruf '' Super (onoma) '', aber sehen Sie sich an, was dieser Konstruktor macht ... – f1sh

+0

Das war es, danke! – SteliosA

+0

Beachten Sie, dass es wirklich eine gute Übung ist, Mitgliedsvariablen endgültig zu machen, es sei denn, sie müssen * wirklich * änderbar sein. Dann können Sie sicher sein, dass Sie sie immer initialisieren. –

Antwort

1

Der Konstruktor Sie aus der Unterklasse aufrufen sieht wie folgt aus:

public arxiki(String onoma){ 
} 

, die offensichtlich ist die Zuordnung fehlt, fügen Sie diese in den Körper des Konstruktor:

this.onoma=onoma; 
+0

Danke, Problem gelöst! – SteliosA

+0

dann können Sie dies als die Antwort akzeptieren :) – f1sh