同じ親を共有するクラス内の防護フィールドへのアクセスと可視性があるのはなぜですか? 私は常に、保護されたものは、決して外部ではなく、親または子自体を介してのみアクセスできると考えていました。
class Parent {
protected int age;
}
class Sister extends Parent { }
class Brother extends Parent {
public void myMethod(Sister sister) {
//I can access the field of my sister,
// even when it is protected.
sister.age = 18;
// Every protected and public field of sister is visible
// I want to reduce visibility, since most protected fields
// also have public getters and some setters which creates
// too much visibility.
}
}
だから家族以外から守られているだけなのかな。これはなぜですか?また、直接の親と子以外の家族からも何かを隠すにはどうすればよいですか? 私には、アクセス メンバー修飾子が不足しているようです。のようなものは、family
実際にはあるべきでprotected
あり、保護されるべきであり、子と親以外のすべてから隠されるべきです。私は誰にも Java を書き直すように頼んでいるわけではありません。