標籤:java解惑 fianl 終極危難
<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(){ ^ 被覆蓋的方法為final1 個錯誤</span>
注釋掉之後
結果:
18
9
看到區別了吧,
final對於方法和屬性在繼承方面是有不同的作用的。
當方法被final修飾時,方法不能被重寫或隱藏
當屬性被final修飾時,方法可以被隱藏。
在屬性隱藏裡可以看到,當屬性被隱藏後,在子類裡可以通過super訪問,在這裡有提提供了一種方法,那就是可以在父類裡提供一個final類型的get方法,來返回被隱藏的屬性
java解惑之final