定义是这样的1final类不能被继承,没有子类,final类中的方法默认是final的。 
2.final方法不能被子类的方法覆盖,但可以被继承。 第一条我明白
第2条有疑问
final方法的话那他的类也是final的吧?那如果是final类的话不就不能被继承了么?那为什么第2条说可以继承但不能重写什么意思 能否举个例子

解决方案 »

  1.   

    意思就是这样public class TestFinalMoethod { public static void main(String[] args) {
    Sub.f();
    }
    }class Super {

    public static final void f() {
    System.out.println("static final method f().");
    }
    }class Sub extends Super {

    //public static void f() {}不能覆盖
    }
      

  2.   


    package mypack;public class A { public static void main(String[] args) {
    C a = new C(); 
    a.say();
    }
    }
    class B{//B有final方法,但不是final类 public final void say() {
    System.out.println("您好");
    }}
    //final类的方法是final方法,但有final方法的类不一定是final类,所以是可以继承的,但不能修改final方法
    class C extends B {

    }
      

  3.   

    有finally方法的类不一定是finally类
      

  4.   

    一个正常类的方法也可以定义成final的啊
    所以就不存在类不能被继承的问题了
    而它的子类肯定继承了父类的所有方法
    但继承归继承
    由于它是final方法
    所以这个方法不能被重写
    其他的方法依旧可以重写
    以后对多态熟悉了
    就会明白为什么这样做了
      

  5.   


    public class TestFinalMoethod {    public static void main(String[] args) {
            Sub.f();
        }
    }class Super {
        
        public static final void f() {
            System.out.println("static final method f().");
        }
    }class Sub extends Super {
        
        //public static void f() {}不能覆盖,但是你Sub类的实例可以调用Super类的f()方法。
                                     //所以final方法不能被子类的方法覆盖,但可以被继承。
    }
      

  6.   


    楼主错在认为有final方法的类就是final类