java解惑之final

时间:2015-04-17 11:21:18   收藏:0   阅读:126
<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方法,来返回被隐藏的属性

评论(0
© 2014 mamicode.com 版权所有 京ICP备13008772号-2  联系我们:gaon5@hotmail.com
迷上了代码!