Ho scritto accessori ed i mutatori metodi, ma ancora non posso accedere alle variabili private! perché?

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

Domanda

ho scritto la mia classe, con le sue variabili private e poi ho scritto i metodi di accesso e mutatori necessari per accedere a tali variabili, ma questo non funziona quando l'eseguo dopo aver scritto la classe principale. Perché quello che accade controllare il mio codice qui:?

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

Si prega di ragazzi appena essere paziente con me, sono davvero un programmatore "novizio"

È stato utile?

Soluzione

Java non ha zuccheri sintattici come C # e non vi permetterà di fare chiamate in da object.property anche se sono stati forniti i metodi di accesso. Le proprietà sono puramente un modello di progettazione e non sono refleted in sintassi di un linguaggio stesso.

È necessario chiamare in modo esplicito come d1.setMonth("February "); e String val = d1.getMonth();.

Altri suggerimenti

I metodi di accesso si suppone di essere chiamato. Questo è tutto.

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

sempre usare setter e getter per accedere alle variabili private.

Privato i membri possono essere direttamente accessibile solo tra i membri della stessa classe. DateTest è un'altra classe e quindi il sottostante non è possibile

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

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

Sostituire il codice precedente con usando metodi setter corrispondente.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top