Escribí métodos de accesorios y mutantes, ¡pero aún no puedo acceder a variables privadas! ¿por qué?

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

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"

¿Fue útil?

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.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top