1

これは初心者の質問ですが、ググってみましたが、答えが見つからないようです。

クラスの人がいるとしましょう:

class Person {
  private String SSN;
  //blah blah blah...
}

次に、サブクラス OldMan を作成します。

class OldMan inherits Person {
  //codey stuff here...
  public void setSSN(String newSSN) {
    SSN = newSSN;
  }
}

Person からプライベート フィールドを実際に変更できないようです。私は、OldMan が Person を継承したときに、それに属するプライベート変数の独自のコピーを持っているという印象を受けました。実際に何が起こっているかというと、OldMan オブジェクトを作成すると SSN フィールドが作成されますが、それはどういうわけか Person オブジェクトに属していますか??

SSN を保護するだけでよいことはわかっていますが、それはベスト プラクティスですか? ここで実際に何が起こっているのか、重要なフィールドへのアクセスを保護する親クラスを、子クラスから保護せずに作成するにはどうすればよいでしょうか?

4

2 に答える 2

2

You can do something like,

class Person {
      private String SSN;
      //blah blah blah...

    public String getSSN() {
        return SSN;
    }

    public void setSSN(String sSN) {
        SSN = sSN;
    }


    }

public class OldMan  extends Person {
    //codey stuff here...
      public void setSSN(String newSSN) {
        super.setSSN(newSSN);
      }
}
于 2015-11-26T05:23:16.247 に答える
0

実際に何が起こっているかというと、OldMan オブジェクトを作成すると SSN フィールドが作成されますが、それはどういうわけか Person オブジェクトに属していますか??

はい。丁度。

SSN を保護するだけでよいことはわかっていますが、それはベスト プラクティスですか?

丁度。それが保護された仕組みであり、安全に使用できます。

ここで実際に何が起こっているのか、重要なフィールドへのアクセスを保護する親クラスを、子クラスから保護せずに作成するにはどうすればよいでしょうか?

あなたが今言ったように、それらを保護してください。これで、子供とパッケージ内でのみアクセスできます。

于 2015-11-26T05:26:00.767 に答える