浅谈Java中的final关键字与C#中的const, readonly关键字
程序员文章站
2024-03-12 21:24:03
在编程语言中都有某种方式,告知编译器一块数据是恒定不变的。有两个需求
1. 一个永不改变的编译器常量
2. 一个在运行时被初始化的值,而这个值不会被改变
在java中...
在编程语言中都有某种方式,告知编译器一块数据是恒定不变的。有两个需求
1. 一个永不改变的编译器常量
2. 一个在运行时被初始化的值,而这个值不会被改变
在java中,使用final修饰变量实现这两个需求
<pre name="code" class="java">//编译器常量 private final int valueone = 9; private static final int value_two = 99; public static final int value_three = 39; //运行时被初始化的值,且值不会被改变 private final int i4 = rand.nextint(20); static final int int_5 = rand.nextint(20);</span>
final修饰基本数据类型时,使数据恒定不变
final修饰对象引用时,使引用恒定不变。一旦引用被初始化指向一个对象,就无法再把它改为指向另一个对象。
然而,对象其自身是可以修改的
final修饰方法参数列表中的参数,意味着无法在方法中更改参数引用所指向的对象。这一特性主要用来向
匿名内部类传递数据
另外,在java中
final修饰方法,目的是明确禁止子类覆盖这个方法
final修饰类,禁止继承
在c#中是如何实现这两个需求的呢?
需求1:编译器常量
const修饰常量,必须能在编译时用于计算。常量总是静态的但不必(实际上,是不允许)在常量声明中包含修饰符static
需求2:运行期常量
readonly关键字
有时可能需要一些变量,其值不应改变,但在运行之前其值是未知的。
c#为这种情形提供了另一种类型的变量:只读字段
另外,在c#中
sealed修饰方法,目的是明确禁止子类覆盖这个方法
sealed修饰类,禁止继承
以上就是小编为大家带来的浅谈java中的final关键字与c#中的const, readonly关键字全部内容了,希望大家多多支持~
下一篇: PHP 无限级分类