Protected vs Public in terms of Inheritance in Java
当在创建超类时使用Java中的受保护的对象时,如果程序在受保护的访问修饰符集没有任何问题的情况下运行,那么有必要将其更改为公共的吗?
你应该遵循特权最小的原则。
这意味着应该为成员分配程序工作所需的最低可访问性。
如果一个不相关的类需要访问,则使它成为
如果要完全信任子类来操作数据,并且它需要它正常工作,那么可以使成员
否则,将其设置为
如果你的程序在
回想一下那些访问修饰符正在做什么。
更改这些字段的可见性所涉及的风险更大,这取决于数据封装的内容。我强烈反对这种声明。
仅当您希望变量或方法被超类的子类访问或重写,但不希望该变量或方法在超类或子类(即公开)之外被访问时,才在超类中使用protected。
当您希望任何类访问您的变量或方法时,请使用public。注意,您应该很少有公共的非最终变量或公共可变变量。
if a program runs without any problems with a Protected access
modifier set is there any need to change it to Public?
不,对变量和方法使用最不可访问的访问修饰符。因此,如果它们不被要求作为公共的,不要将它们公开,只有在它们需要被保护时才使它们受到保护(即子类要求)。否则就要保密。
为了后面的推理,请参见Joshua Bloch中的"项目13:最小化类和成员的可访问性":HTTP//UET.VNU.EUU.VN/~CHOTMT/E-Booo/Java/Actuv.java2n.Edith.May.2008。