3-1课程里的疑问
1、final 方法:该方法不允许被子类重写
那么,该方法是不是也不允许被子类重载呢?
2、老师,在课程里,final限定方法里的局部变量temp,可以:
final int temp=10;
也可以先声明,在赋值:
final int temp;
temp=10;
最后打印:System.out.println(temp);
那么,能不能这样写:
final int temp;
System.out.println(temp=10);
也就是说,在打印里才赋值,可以吗?
还有,被final修饰的局部变量,是不是只有一次赋值的机会?要么声明赋值,要门先声明后赋值,反正赋值的机会仅限1次?
3、给一个成员变量前加final:
public final int temp;
根据课程可知,temp要门在声明的时候就赋值,要门得在构造代码块或者构造方法中有一次机会为temp赋值。老师,为什么只能在构造方法和构造代码块里对temp进行赋值?
还有,能不能通过对象实例化时,通过构造方法传参的形式对temp进行初始化赋值?如:
public Animal(String name,int month,int temp){
this.temp=temp;
}
这样对被final修饰的temp赋值方式可以吗?
正在回答
你好!
1、关于第一个问题,老师是说,下面的代码是可以执行的,并且赋值机会只有一次。其实下面的代码同学可以在开发工具中尝试一下。
inal int temp;
System.out.println(temp=10);
2、关于第二个问题,首先这个就是Java的语法规则,另外,如果不赋值的话,则生成的对象中final变量的值是未知的,编译器也会直接报错,因此必须进行初始化,也就是要么定义的时候就赋值,要么在构造方法和构造代码块中赋值。
如果我的回答解决了你的疑惑,请采纳!祝学习愉快!
- 参与学习 人
- 提交作业 3802 份
- 解答问题 11489 个
本阶段带你迈入Java世界,学习Java必备基础知识,基础语法、面向对象思想以及常用工具类的使用。
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星