1

我用它的私有变量编写了我的类,然后我编写了访问这些变量所需的访问器和修改器方法,但是当我在编写主类之后运行它时这不起作用。为什么会发生这种情况?在这里检查我的代码:

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

请大家耐心等待我,我真的是一个“新手”程序员

4

4 回答 4

6

应该调用访问器方法。就是这样。

d1.setMonth("February");
d1.setDay(13);
于 2012-01-10T23:03:11.933 回答
4

object.propertyJava 没有像 C# 这样的语法糖,即使您提供了访问方法,也不允许您进行调用。属性纯粹是一种设计模式,并没有反映在语言本身的语法中。

您需要像d1.setMonth("February ");and一样明确地调用它们String val = d1.getMonth();

于 2012-01-10T23:02:52.603 回答
1

始终使用 setter 和 getter 来访问私有变量。

于 2012-01-11T03:21:06.570 回答
0

私有成员只能在同一类的成员中直接访问。DateTest是另一类,因此以下是不可能的

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

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

使用相应的 setter 方法替换上面的代码。

于 2012-01-10T23:04:10.900 回答