Java 编译错误分析:继承 final 类并修改实例变量
为了使下面的程序通过编译,最少要做的修改是()。给出分析过程
final class A{
int x;
void mA(){x=x+1;}
}
class B extends A {
final Aa=new A();
final void mB(){
a.X=20;
System.out.println('hello');
}
答案:B. 第6行去掉final
分析过程:
- A类是final的,不能被继承,所以B类不能继承A类。
- 在B类中,第6行
a.X=20;中的a是A类的一个实例变量,不能在B类中修改,所以需要去掉final修饰。 - 第8行的语句不影响编译通过,可以不删除。
- 第1行去掉final也不会影响编译通过,但是会违背A类的final特性,不符合题目要求。
原文地址: https://www.cveoy.top/t/topic/ngRk 著作权归作者所有。请勿转载和采集!