之前我曾经从网上找过这个问题,网上有两种说法,一种说法是会被继承,他们解释继承是继承子类除构造函数外的一切属性和方法,只是private被隐藏了,但是也继承了。另一种说法是不继承,private不能被继承当时我也没能确定他是否继承..今天看Thanking in java,看到了一个问题,在类当中只要他的方法是private的,那么他就相当于是final的然后我就很费解了..public class BTest extends A{
public static void main(String[] args){
BTest bt = new BTest();
bt.f();
}
private void f(){
System.out.println("父类的f方法");
}
}
class A{
private void f(){
System.out.println("子类的f方法");
}
}按道理来说如果真的继承private方法的话,那么因为private是final,f()方法在父类中就不应该被重写(假设private方法可以被继承)呀..这与假设矛盾,所以private修饰的方法是不能被继承的,这样想对么?请问...希望有个明白人给仔细讲讲,谢啦...

解决方案 »

  1.   

    final类不能被继承
    final类中的所有方法都是隐式final方法
    而声明为private的方法也是隐式的final方法
    所以不能被继承
      

  2.   

    你百度的两种答案是一个意思, 隐藏了就是不能用了, 跟没继承到是一样的. 一但属性或者方法被private修饰了,那么表示在子类中是不可以调用的.  那么对于私有化了的属性非要在子类中用到的话, 就只能利用可以被调用的方法来get.这个代码中的两个private, 你可以试试, 屏蔽掉BTest里面的f()方法时,会报错,说明父类A中f()并没有继承或者说继承过来但是隐身了,不能用了.  
      

  3.   

    private是老子的私有财产 儿子也不能用的
      

  4.   

    http://blog.csdn.net/holy_phoenix/article/details/488864写的很详细
      

  5.   

    没事老是纠结这种蛋碎的问题干嘛?private 只有自己可以用!
      

  6.   

    "类当中只要他的方法是private的,那么他就相当于是final的"就像说苹果是个鸡蛋一样,这本书真能扯淡。是否继承是个“概念”问题,概念定义不同,当然结论不同。所以很多争论是鸡同鸭讲。
    按java的标准,java语言规范http://docs.oracle.com/javase/specs/jls/se7/html/jls-8.html#jls-8.2
    Members of a class that are declared private are not inherited by subclasses of that class.Only members of a class that are declared protected or public are inherited by subclasses declared in a package other than the one in which the class is declared.Constructors, static initializers, and instance initializers are not members and therefore are not inherited.所以结论很明显了。很多人理解的继承和java语言规范中所谓的“继承”不一样。所以结论也不一样。比如有人认为只要子类对象内存中有,就算继承(举个例子,父类中定义了private int a; 子类对象中当然会分配相应的空间,所以有人以此为证据说,private的也被“继承”了)。理解意义即可。概念很难统一的,如国内有著作牛人说过,什么书说private的不继承就是垃圾,直接把java语言规范给鄙视了。
      

  7.   

    当然不能。能基础还叫 private 吗?