Ich habe Accessors and Mutators -Methoden geschrieben, aber ich kann immer noch nicht auf private Variablen zugreifen! warum?

StackOverflow https://stackoverflow.com/questions/8811794

Frage

Ich habe meine Klasse mit seinen privaten Variablen geschrieben und dann die Accessor- und Mutatormethoden geschrieben, die für den Zugriff auf diese Variablen erforderlich sind, aber das funktioniert nicht, wenn ich sie nach dem Schreiben der Hauptklasse ausführte. Warum passiert das? Überprüfen Sie meinen Code hier:

public class DateTest{
    public static void main (String [] args){

        Date d1 = new Date();
        Date d2 = new Date();

        d1.month = "February ";
        d1.day = 13;
        d1.year = 1991;

        d2.month = "July";
        d2.day = 26;
        d2.year = 1990;

        d1.WriteOutput();
        d2.WriteOutput();
        }
    }


      class Date {

private String month;
private int day;
private int year;

public String getMonth(){
    return month;
                     }
public int getDay(){
    return day;
                   }
public int getYear(){

    return year;    }

public void setMonth(String m){
    if (month.length()>0)
        month = m;
                      }
public void setDay(int d){
    if (day>0)
     day = d;       }
public void setYear(int y){
     if (year>0)
     year = y;
                          }

   public void WriteOutput(){
    System.out.println("Month " + month + "Day "+ day + " year" + year);
    }
    }

Bitte Jungs sein einfach geduldig mit mir, ich bin wirklich ein "Anfänger" -Programmierer

War es hilfreich?

Lösung

Java hat keinen syntaktischen Zucker wie C# und erlaubt Ihnen nicht, Anrufe aus zu tätigen object.property Auch wenn Sie die Zugriffsmethoden bereitgestellt haben. Eigenschaften sind rein ein Entwurfsmuster und werden nicht in der Syntax einer Sprache selbst wieder aufgenommen.

Sie müssen sie ausdrücklich wie möglich anrufen d1.setMonth("February "); und String val = d1.getMonth();.

Andere Tipps

Die Accessor -Methoden sollen aufgerufen werden. Das ist es.

d1.setMonth("February");
d1.setDay(13);

Verwenden Sie immer Setter und Getter, um auf die privaten Variablen zuzugreifen.

Privatgelände Mitglieder können direkt nur innerhalb der Mitglieder derselben Klasse zugegriffen werden. DateTest ist eine andere Klasse und daher ist das unten nicht möglich

d1.month = "February ";
        d1.day = 13;
        d1.year = 1991;

        d2.month = "July";
        d2.day = 26;
        d2.year = 1990;

Ersetzen Sie den obigen Code durch die Verwendung entsprechender Setter -Methoden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top