Я писал методы аксессов и мутаторов, но все же я не могу получить доступ к частным переменным! Почему?
Вопрос
Я написал свой класс с его частными переменными, а затем написал методы аксессуара и мутатора, необходимые для доступа к этим переменным, но это не работает, когда я запускаю его после написания основного класса. Почему это происходит? Проверьте мой код здесь:
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);
}
}
Пожалуйста, ребята, просто будьте терпеливы со мной, я действительно «новичок» программист
Решение
У Java нет синтаксических сахаров, таких как C#, и не позволит вам делать звонки из object.property
Даже если вы предоставили методы доступа. Свойства являются исключительно дизайнерским шаблоном и не перевозят в синтаксисе самого языка.
Вам нужно называть их явно как d1.setMonth("February ");
а также String val = d1.getMonth();
.
Другие советы
Предполагается, что методы аксессуара должны быть вызваны. Вот и все.
d1.setMonth("February");
d1.setDay(13);
Всегда используйте сеттеры и Getters для доступа к частным переменным.
частный Участники могут быть непосредственно доступны только в членах того же класса. DateTest
другой класс, и, следовательно, ниже невозможно
d1.month = "February ";
d1.day = 13;
d1.year = 1991;
d2.month = "July";
d2.day = 26;
d2.year = 1990;
Замените приведенный выше код с помощью соответствующих методов сеттера.