今天看帖子,看有人这样写:
所有private方法默认是final的。
对此,我表示怀疑。private是表示方法可见性的,而final表示方法不能在子类中被覆写。
所以我觉得这两个关键字之间没什么关系。例子:
class person {
    private void run() {
        System.out.println("person running");
    }
}class man extends person {
    private void run() { //子类中仍然可以写run()方法,但如果person类的run方法是final就不行了
        System.out.println("man running");
    }
}大家说呢?

解决方案 »

  1.   

    那句话有一定的道理。因为private的方法不存在继承的问题,因为子类根本不知道父类有那么一个方法,所以更谈不上override了。我支持你朋友的说法,呵呵!
      

  2.   

    父类是private final的, 子类同样可以写一个相同的,因为那个不是 override. 理由同前。
      

  3.   

    我是经常用private 来着,可是对final 道不怎么用呢,对于它们的关系也道不明白,你可以进行局布的测试呀,分别生成各自的方法,让一类去调用!
      

  4.   

    子类中的private只是"碰巧"和父类中的方法同名而已,两者没有什么关系.
      

  5.   

    今天查了查<<Thinking in Java>>中文版(第三版),这本书上也这么写(见 P285),private方法属于final方法,
    反正我觉得不对
      

  6.   

    今天查了查 <<Thinking in Java>>中文版(第三版),这本书上也这么写(见 P285),"private方法属于final方法".反正我觉得不对
      

  7.   

    final关键字说明不能被子类所继承等,字符串不可变更的,以及常量等等,说明从申明的那一刻起,这个对象就不能改为,private关键字只能说明对象或类为私有的~两者,,,,好像没有关系~
      

  8.   


    class person { 
        private final void run() {
            System.out.println("person running"); 
        } 
    } class man extends person { 
        private void run() { //子类中仍然可以写run()方法,但如果person类的run方法是final就不行了 
            System.out.println("man running"); 
        } 
    } private 和final一起加上就没有问题啦,我觉得private的方法是final的,但是final的不一定是private的。
      

  9.   

    private指定类、方法、属性的可见性。
    final对类控制了可继承,对方法控制性覆盖性,对属性控制了引用性。
    两者没联系,影响到是有的。
    例如:
    class A{
       private final void setXX(){}
    }
    calss B{
        public void setXX(){}
    }
    这样写是没错的,原因在于private 修饰了方法不可被继承,那么也就提不到覆盖了,所以final加上没意义了。
    简单的说private影响了final的作用。本来可以限制子类不能覆盖的,这下子加上它子类虽然没覆盖,但是自己定义了该同名方法。
    例如:
    package com.edsx;
    final class A{}package com.guas;
    class B{
        public B(){
           com.edsx.A a;
        } 
    }
    本来可以看见A类的不能继承但是能用啊,这下子好了加了private 什么都看不见了。