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