Escribí métodos de accesorios y mutantes, ¡pero aún no puedo acceder a variables privadas! ¿por qué?
Pregunta
Escribí mi clase con sus variables privadas y luego escribí los métodos de accesor y mutador necesarios para acceder a esas variables, pero eso no funciona cuando lo ejecuto después de escribir la clase principal. ¿Por qué sucede eso? Revise mi código aquí:
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);
}
}
Por favor chicos solo sean pacientes conmigo, realmente soy un programador "novato"
Solución
Java no tiene azúcares sintácticos como C# y no le permitirá hacer llamadas desde object.property
Aunque haya proporcionado los métodos de acceso. Las propiedades son puramente un patrón de diseño y no se reflejan en la sintaxis de un lenguaje en sí.
Necesitas llamarlos explícitamente como d1.setMonth("February ");
y String val = d1.getMonth();
.
Otros consejos
Se supone que se llaman a los métodos de accesorios. Eso es todo.
d1.setMonth("February");
d1.setDay(13);
Siempre use Setters y Getters para acceder a las variables privadas.
privado Se puede acceder directamente a los miembros solo dentro de los miembros de la misma clase. DateTest
es otra clase y, por lo tanto, lo siguiente no es posible
d1.month = "February ";
d1.day = 13;
d1.year = 1991;
d2.month = "July";
d2.day = 26;
d2.year = 1990;
Reemplace el código anterior utilizando los métodos establecidos correspondientes.