J'ai écrit des méthodes accesseurs et mutateurs, mais je ne peux pas accéder à des variables privées! Pourquoi?

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

Question

J'ai écrit ma classe avec ses variables privées, puis je l'ai écrit les accesseurs et mutateurs nécessaires pour accéder à ces variables, mais cela ne fonctionne pas quand je le lance après avoir écrit la classe principale. Pourquoi est-ce que cela se produise vérifier le code ici:

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);
    }
    }

S'il vous plaît les gars juste être patient avec moi, je suis vraiment un programmeur « novice »

Était-ce utile?

La solution

Java n'a pas de sucres syntaxiques comme C # et ne vous permettra pas de faire des appels à partir object.property même si vous avez fourni les méthodes d'accès. Les propriétés sont purement un modèle de conception et ne sont pas refleted dans la syntaxe d'une langue elle-même.

Vous devez les appeler explicitement comme d1.setMonth("February "); et String val = d1.getMonth();.

Autres conseils

Les méthodes accesseurs sont censés être appelé. Voilà.

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

setters Toujours utiliser et apporteurs d'accéder aux variables privées.

membres privés peut être directement accessible uniquement au sein des membres de la même classe. DateTest est une autre classe et par conséquent le ci-dessous est impossible

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

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

Remplacer le code ci-dessus en utilisant des méthodes de réglage correspondant.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top