- class Student
- {
- private final String name;
-
- public String getName()
- {
- return name;
- }
- }
- class Test33
- {
- public static void main(String[] args)
- {
- Student s = new Student();
- }
- }
复制代码 private final String name;//这句会报错
发的Java基础入门124页给出的解释是:
1.因为使用final关键字修饰成员变量时,虚拟机不会对其进行初始化。
2.因此使用final修饰成员变量时,需要在定义变量的同时赋予一个初始值。
第一句话没错,第二句话有待商榷
研究了下,发现可以有两种解决方案:
1.在默认空构造函数中初始化name
Student()
{
name = "张三";
}
2.在构造代码块中初始化name
{
name = "张三";
}
|
|