如何在java中的私有字段上读写

时间:2015-03-01 20:47:42

标签: java variables static

我想写/读私有变量...... 请看我的代码:

 public class Date {
 Date time = new Date();
 private int year,month,day ;
    public static void main(String[] args) {
        System.out.println("My text :");
       Scanner myScanner = new Scanner(System.in);
       int year,month,day ;
       String error = "My text " ;
       String monthName = null ;
       System.out.println("Year :") ;
       year = myScanner.nextInt();
       setYear(year) ;
       System.out.println("Month :") ;
       month = myScanner.nextInt();
       setMonth(month) ;
       System.out.println("Day :") ;
       day = myScanner.nextInt();
       setDay(day) ;
       switch(month) {
       case 1 :
           monthName = "Name of this month in my language" ;
           break ;
       case 2 :
           monthName = "Name of this month in my language" ;
           break ;
       case 3 :
           monthName = "Name of this month in my language" ;
           break ;
       case 4 :
           monthName = "Name of this month in my language" ;
           break ;
       case 5 :
           monthName = "Name of this month in my language" ;
           break ;
       case 6 :
           monthName = "Name of this month in my language" ;
           break ;
       case 7 :
           monthName = "Name of this month in my language" ;
           break ;
       case 8 :
           monthName = "Name of this month in my language" ;
           break ;
       case 9 :
           monthName = "Name of this month in my language" ;
           break ;
       case 10 :
           monthName = "Name of this month in my language" ;
           break ;
       case 11 :
           monthName = "Name of this month in my language" ;
           break ;
       case 12 :
           monthName = "Name of this month in my language" ;
           break ;
           default : System.out.println("Error !") ;
       }
       if(day >= 1 && day <=31){
       JOptionPane.showMessageDialog(null ,getYear() + " " + monthName + " " + getDay()) ;
       }
       else {
           System.out.println(error);
       }
    }
    public int getYear() {
        return year;
    }
    public void setYear(int year) {
        this.year = year;
    }
    public int getMonth() {
        return month;
    }
    public void setMonth(int month) {
        this.month = month;
    }
    public int getDay() {
        return day;
    }
    public void setDay(int day) {
        this.day = day;
    }

}

我想读/写私人年/月/日...  只是私人...... 我已经创建了他们的可访问函数但我收到一个错误(&#34;无法从类型Date&#34中对非静态方法setYear(int)进行静态引用;我无法修复它。 你能救我吗?

1 个答案:

答案 0 :(得分:1)

首先,您应该尝试避免在Date课程中混合使用主要方法。您可以使用main创建另一个类,看起来像这样(测试运行代码):

class DateRunner
{
    public static void main(String[] args){
        Date d = new Date();
        System.out.println(d.getDay()); //getting variables from Date object.
    }
}

class Date{
    //Your usual implementation (members and constructor)
}

一旦你这样做,你就可以很容易地使用类中的变量。


我不确定您的学校是否希望您将课程命名为日期。如果我是你,我会尝试将其命名为MyDate而不是Date,因为Java中已有Date类。

  

我收到一个错误(&#34;无法从类型Date&#34中对非静态方法setYear(int)进行静态引用;我无法解决它..你能帮我吗? ?

您需要了解static成员是什么。它会给你错误,因为你试图从main访问非静态成员,这是一种静态方法。

有两种方法可以阻止错误:

  1. 让你的班级变量成为静态(强烈反对你这样做)

  2. 创建Date实例并从Date Object访问实例变量。(这就是你应该做的)

  3. 示例:

    Date d = new Date();  //Create an object of Date
    

    现在,您可以通过它的实例轻松访问所有约会对象。

    示例:

    d.getDay();
    d.setDay(5);
    d.getMonth();
    d.setMonth(7);
    d.getYear();
    d.setYear(2015);
    

    您现在可以在main方法中编写这些内容。

      

    如何读取和写入java中的私有字段

    通过创建一个对象并使用上面的getter和setter。