有没有理由拥有私有常量,这不是静态的?是否有任何情况需要非静态私有const?如果常量默认为静态会不会有意义?
我使用ActionScript3和一些Java,但我认为这是一个更广泛的OOP问题。
答案 0 :(得分:1)
我不知道这是否重要,但在Java中你需要使局部变量最终能够在内部类中使用它们(因为Java没有真正的闭包,而是复制捕获的范围,这必须从此以后是不可改变的):
void test(){
final long startTime = System.currentTimeMillis(); // needs to be final
new Runnable(){
System.out.println(startTime);
}.run();
}
此外,您可以将字段和变量设置为final,以防止意外重新分配它们(并且编译器和运行时也可以使用此信息进行性能优化)。
当然,这两个例子都不是关于数学意义上的常量(Java中的最终变量可以根据变量输入分配给计算表达式)。
答案 1 :(得分:1)
除了访问匿名类中的变量(如Thilo所说)之外的另一个原因是,如果你想要一个你无法改变赋值的对象,但它保持当前对象的某种状态,那么你就可以了不要在班级的多个实例之间分享。
答案 2 :(得分:1)
C#具有readonly fields的概念,即只能在构造函数中分配的字段,并且不能在任何其他方法中更改。它们就像一个类的特定实例(在它的构造函数之外)而不是类本身的常量。