2 Noob-Fragen zu Objekten



  • Hallo,
    ich hätte zwei Fragen bezüglich diesem Code hier:

    1. warum returned z.B: die Methode

    getVorname()
    

    nur

    return Vorname;
    

    und nicht

    return this.Vorname;
    

    , und wieso ist es genau andersrum unten in der

    print()
    

    methode

    2. was würde sich ändern, wenn ich

    public static print()
    

    erstellen würde?

    public class Person {
    private String Vorname;
    private String Name;
    private int Alter;
    private Adresse adresse;
    
    public Person (String Namerein, String Vornamerein, int Alterrein, Adresse adresse){
    	this.Vorname = Vornamerein;
    	this.Name = Namerein;
    	this.Alter = Alterrein;
    	this.adresse = adresse;
    
    	}
    
    public String getVorname ( ){
    	return Vorname;
    
    }
    
    public void setVorname (String Vornamme ){
    	this.Vorname = Vornamme;
    }
    
    public String getName (){
    	return Name;
    
    }
    
    public void setName(String Namme){
    	this.Name = Namme;
    }
    
    public int getAlter(){
    	return Alter;
    }
    
    public void setAlter ( int Alter ){
    	this.Alter = Alter;
    }
    
    public Adresse Getadresse (){
    	return adresse;
    }
    
    public void SetAdresse( Adresse adresse ){
    	this.adresse = adresse;
    }
    public void print (){
    	System.out.println("Der Vorname:" + this.Vorname);
    	System.out.println("Der Name   :" + this.Name);
    	System.out.println("Das Alter  :" + this.Alter);
    
    	if( adresse != NULL ){
    		adresse.print();
    	}
    	System.out.println("");
    
    }
    }
    


  • Zu 1)
    Du kannst die Variablen einer Klasse direkt, also ohne this. davor, ansprechen, solange diese nicht überdeckt werden. Das ist z.B. bei setVorname der Fall. Da der Parameter auch Vorname heißt, muss man dort this.Vormane nutzen. Bei print könnte man das this aber auch weglassen.

    Zu 2)
    Allgemein sorgt das static dafür, dass etwas zur Klasse selber gehört, und nicht zu jedem einzelnen Objekt dieser Klasse. Eine statische Variable existiert z.B. genau ein einziges mal, und wird nicht wie nicht-statische Variablen für jede Objektinstanz neu angelegt. Wäre z.B. der Vorname statisch, dann hätte jede Person den gleichen Vornamen. Bei statischen Funktionen kannst du nur auf statische Variablen zugreifen. Da du aber auf nicht-statische Klassenvariablen zugreifst, ist es nicht möglich print als static zu deklarieren.



  • ok danke habs verstanden, danke 😉


Log in to reply