アクセサーズとミューテーターの方法を書きましたが、それでもプライベート変数にアクセスできません!なぜ?

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

質問

私はクラスをそのプライベート変数で書き、その後、これらの変数にアクセスするために必要なアクセターとミューテーターの方法を書きましたが、メインクラスを書いた後に実行しても機能しません。なぜそれが起こるのですか?ここで私のコードをチェックしてください:

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

常にセッターとゲッターを使用して、プライベート変数にアクセスしてください。

プライベート メンバーは、同じクラスのメンバー内でのみ直接アクセスできます。 DateTest 別のクラスです。したがって、以下は不可能です

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

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

上記のコードを、対応するセッターメソッドを使用して置き換えます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top