我有以下课程(示例):
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,我将无法访问它。
如果我设置numberOfTeeth
protected internal,我可以在类外更改这个值。
如果我做numberOfTeeth
internal,我可以在课堂外更改这个值。
如果我设置numberOfTeeth
protected,我将无法访问它。
如果我numberOfTeeth
公开,我可以在课堂外更改此值。
我也尝试将其设为只读,但随后无法将其设置在构造函数之外。
是否有任何访问修饰符可以让我这样做?还是有其他方法可以实现这种保护?