所谓父类拥有的东西子类也有,但是子类在拥有了父类的私有属性和方法之后,却不能调用它们,所以严格来说私有的方法和属性是不能被子类继承的,是这样吗?

解决方案 »

  1.   

    http://www.cn-java.com/www1/bbs/redirect.php?tid=32130&goto=lastpost
      

  2.   

    private :   私有成员, 在类的内部才可以访问。
    protected : 保护成员,该类内部和继承类中可以访问。 
    public :    公共成员,完全公开,没有访问限制。 
    internal:   在同一命名空间内可以访问
      

  3.   

    我恰巧也想问个这样的问题
    public class TestExec{
    public static void main(String[] args){
    Student stu = new Student();
    stu.show();
    }
    }
    class People{
    String name;
    private int age = 30;//私有属性
    public void show(){
    System.out.println(age);
    }
    }
    class Student extends People{}stu调用的show()到底是谁的方法?
      

  4.   

    http://java.sun.com/docs/books/jls/third_edition/html/names.html#6.4.3
    The members of a class type (§8.2) are classes (§8.5, §9.5), interfaces (§8.5, §9.5), fields (§8.3, §9.3, §10.7), and methods (§8.4, §9.4). Members are either declared in the type, or inherited because they are accessible members of a superclass or superinterface which are neither private nor hidden nor overridden (§8.4.8).
      

  5.   

    所以严格来说私有的方法和属性是不能被子类继承的,是这样吗?
    1.那必须不是这样呀,你想想你把你的父类的属性设置为private的,然后不提供或者只提供一个private的方法来获得该属性,那你设计这个类属性就基本等同于在父类的所有方法里设计了一个可用的零时变量,因为只有在该父类里你可以访问该属性,但是这有什么意义呢,还不如用到哪个零时变量时自己再定义。
    2.一般是把父类的属性设置为private的,然后提供一个public的方法可以获得该属性,这样父类就可以实现封装,子类可以继承父类属性和方法。
    3.拓展:单例模式(Singleton),自己试着去研究下吧!那个是把构造方法设为私有的~~~
      

  6.   

    你别管能不能继承,只要是 private 的东西除了自身中的方法、类可以调用之外,其他地方一律不允许调用就可以了。我感觉 CSDN 特别喜欢讨论 private 能不能被继承、String 有多少个对象、HTTP 请求乱码的问题!这好比中国人学习英语特别喜欢去研究英语语法什么的,真正要说几句、听几句就成聋哑人了。CSDN 推荐的帖子也基本上就是一些 XXX 面试题,然后这种帖子里的回复 80% 以上都是学习、、收藏、up 之类的!不知道这些是 CSDN 的悲哀,还是众多 Java 程序员和学习者的悲哀。
      

  7.   

    方法调用的是子类的,因为子类实际上拥有这个方法,但是这个方法是打印父类的age...我觉得是这样...
    你在student里也声明一个age看看...
      

  8.   

    调用的是父类的方法,建议你看看老马的J2SE视频,他把内存分析的很清楚
      

  9.   

    子类先检查自身是否重写父类的方法,如果重写了则调用自己的方法,若没有重写,则调用负累的父类的方法,这里Student类没有重写Pepole类的show方法,所以这里应该调用的是Pepole类的show方法....
      

  10.   


    这是JAVA?还有一个是friendly  缺省
      

  11.   

    new出来的stu对象里面相当于还有一个父类的对象,内存栈空间里面子类对象包含了父类对象
    用private相当于子类有父类的拥有权,而没有使用权。