子类继承的是超类中的所有非私有数据和方法,我想问一下,
那超类中的私有数据和方法呢?虽然子类不能够访问他们,但是子类继承他们了吗?
有人能帮我解释一下吗?

解决方案 »

  1.   

    超类中的公共接口(public 方法)可以访问其私有的属性及方法
    那样子类不就可以间接继承了超类的私有数据和方法class T { private int field = 500;
    public int  getFiled() {
    return getPrivateFiled();
    }
    private int getPrivateFiled() {
    return field;
    }
    }
    public class S extends T { public static void main(String args[]) {
    T t = new S();
    System.out.println(t.getFiled());
    }
    }
      

  2.   

    楼主问的问题不好回答。
    既然不可见,谈继承与不继承没有什么意义。
    继承为了什么?为了使用父类中的成员或方法。不能使用,就算叫继承了,也没用啊。某人(A)的父亲(B)是个富翁,遗憾的越富的人越吝啬。
    B说,我的钱是我挣来的,只能我自己花,甚至我最疼爱的儿子A,我也不让花,要花自己去挣。
    A对别人说,我们家有很多钱(归B所有),但我一个子儿也花不了,这些钱我爸爸从来也没有
    让我看过一眼。所以,虽然我没有钱,但我爸爸有钱,比你爸爸强多了。(A穿得破衣烂衫的)
    别人向A借钱,A看利息比较高,想借给,但又拿不出来钱来。于是,A向他爸爸B进行转借,调
    用了B的一个“借款”方法,B也乐得鸡生蛋,就借给了A。
    到这儿,A知道B剩下的钱的数目吗?当然不知道啦。
      

  3.   

    虽然在父类的公共方法里可以对父类的私有变量进行操作,但是可能根本无法得到其值,比如说父类有set方法,却没有get方法,这怎么算间接继承了呢?
      

  4.   

    我明白咱当过兵的人的意思,这样确实通过了超类的公共接口实现了子类对超类中private成员和方法的“继承”,不过我觉得你这种例子实用性好像不太强,是为了教学而设计的一种例子。赫赫
    不知道我说得对不对。另外acio说的,既然不可见谈继承就没有意义,我也有所同感,呵呵。趁热打铁,再问大家一个问题。protected到底是什么样的变量和方法呢?他起什么作用?和private有什么差别???我看书都讲到抽象类和抽象方法了,也没提这回事。能帮忙解释一下吗?
      

  5.   

    没有继承,子类只能继承父类的非私有数据和方法。一般情况下每个类的数据都最好声明为私有的,这样如果子类想访问父类的数据,父类可以通过定义一个getnum()的方法返回数据的值,此方法为公有,这样子类可以通过其访问。这样有利于数据的安全性!
      

  6.   

    关于继承的问题我明白了,有人能帮我回答一下protected的问题吗?
      

  7.   

    对不同类别的方法主要是 后期绑定 的策略不同,抑或,子类并没有指向父类
    私有方法的“指针”,因而子类访问不到父类的私有方法。
    -------------------------
    类中protected方法 只能由其子类访问(以及同一包内的类)的到。