私が以前に本当に考えたことがないもの(AS3構文):
private var m_obj:Object;
protected function get obj():Object
{
return m_obj;
}
private var m_str:String;
protected function get str():String
{
return m_str;
}
少なくともサブクラスはm_objまたはm_strを設定できません(ただし、m_objを変更することはできます)。
私の質問:これは単なる露骨なやりすぎですか?
このプログラマーの質問: 単純にパブリックプロパティにするのではなく、クラスプロパティのゲッター/セッターをいつまたはなぜ使用する必要があるのでしょうか。 重複として提案されています。
その質問は、パブリックプロパティとプライベートプロパティのみを扱い、プロパティをゲッターとセッターでラップする必要があるかどうかという点で異なります。私の質問では、保護された変数と、継承するクラスがそれらの変数とどのように相互作用するかに焦点を当てています。
したがって、代替実装は次のようになります。
protected var m_obj:Object; //more accessible than a private variable with a protected getter
protected var m_str:String; //more accessible than a private variable with a protected getter
簡単な保護されたゲッターを使用して、サブクラスが変数に書き込むのをブロックし、他のすべてのアクセスを許可することを話しているので、私の質問も同様です。
AS3のような言語では、参照自体が変更されていない限り、可変オブジェクト変数に変更を加えることもできます。