次のクラスがあります(例):
public class Dog
{
int numberOfTeeth;
public Dog()
{
countTeeth();
}
private void countTeeth()
{
this.numberOfTeeth = 5; //this dog has seen better days, apparently
}
}
犬のオブジェクトを作成したら、歯の数を計算する必要があります。クラス自体の外で変更することなく、その値にアクセスできるようにしたいと思います。
Dog d = new Dog();
int dogTeeth = d.numberOfTeeth; //this should be possible
d.numberOfTeeth = 10; //this should not
ただし、どのアクセス修飾子でこれを実行できるかわかりません。私は次のすべてを試しました:
numberOfTeeth
privateにすると、アクセスできなくなります。protected internal
を作成すると、この値をクラス外で変更できます。internalに
すると、この値をクラス外で変更できます。protectedに
すると、アクセスできなくなります。publicに
すると、この値をクラス外で変更できます。numberOfTeeth
numberOfTeeth
numberOfTeeth
numberOfTeeth
また、読み取り専用にしようとしましたが、コンストラクターの外に設定できませんでした。
これを可能にするアクセス修飾子はありますか? または、この保護を実現する他の方法はありますか?