Final类可以有protected属性或方法吗?这是一个典型的牛角尖,一个类被声明为final,说明该类不可被继承,如果类不能被继承,那么它可以有protected的属性和方法吗?
答案是可以的,那么,这时的protected到底是什么访问权限叫呢?
一个protected的属性或方法,它可以被同一包中的类访问,或是可以被子类所访问,但是现在它不能有子类,所以,这时protected其实就和默认的访问权限完全相同,变成了同一包中的类可以访问。
代码如下:
- 1. package net.moon.insignificant.finalclass;
- 2.
- 3. final class FinalClassSuper{
- 4. protected void sayHello(){
- 5. System.out.println("Hello, world");
- 6. }
- 7. }
- 8.
- 9. public class FinalClassDemo{
- 10. public static void main(String[] args) {
- 11. // TODO Auto-generated method stub
- 12. FinalClassSuper s = new FinalClassSuper();
- 13. s.sayHello();
- 14. }
- 15.
- 16. }