<span style="font-size:18px;">import java.util.*;
class J{
public static final int count = 011;
}
public class SeventyFirst extends J{
public static final int count = 022;
public static void main(String[] args){
System.out.println(count);
}
}</span>
结果:18
<span style="font-size:18px;">import java.util.*;
class J{
public static final int count = 011;
public final int fun(){
return count;
}
}
public class SeventyFirst extends J{
public static final int count = 022;
public static void main(String[] args){
System.out.println(count);
System.out.println(new SeventyFirst().fun());
}
/*public final int fun(){
return count;
}*/
}
</span>
如果不注释掉fun
<span style="font-size:18px;">SeventyFirst.java:14: 错误: SeventyFirst中的fun()无法覆盖J中的fun()
public final int fun(){
^
被覆盖的方法为final
1 个错误</span>
注释掉之后
结果:
18
9
看到区别了吧,
final对于方法和属性在继承方面是有不同的作用的。
当方法被final修饰时,方法不能被重写或隐藏
当属性被final修饰时,方法可以被隐藏。
在属性隐藏里可以看到,当属性被隐藏后,在子类里可以通过super访问,在这里有提提供了一种方法,那就是可以在父类里提供一个final类型的get方法,来返回被隐藏的属性