<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方法,来返回被隐藏的属性
原文地址:http://blog.csdn.net/havedream_one/article/details/45093977