黑马程序员技术交流社区

标题: 为什么继承中,子类可以访问父类的私有变量? [打印本页]

作者: 黑马张平    时间: 2012-3-14 10:51
标题: 为什么继承中,子类可以访问父类的私有变量?
为什么继承中,子类可以访问父类的私有变量?
作者: 赵孟恩    时间: 2012-3-14 10:59
不可以访问的  既然是父类私有的 就应该用 private   那样子类是不可以访问的
给你看下子类访问父类的关系
修饰符        类内部        同一个包        子类          任何地方
private            yes   
default            yes               yes
protected        yes               yes                  yes
public             yes              yes                  yes                 yes
作者: 张希强    时间: 2012-3-14 11:04
当然不能,私有的只能在本类中才可以访问 。
    1) private
  类中限定为private的成员,只能被这个类本身访问。
  如果一个类的构造方法声明为private,则其它类不能生成该类的一个实例。
  2) default
  类中不加任何访问权限限定的成员属于缺省的(default)访问状态,可以被这个类本身和同一个包中的类所访问。
  3) protected
  类中限定为protected的成员,可以被这个类本身、它的子类(包括同一个包中以及不同包中的子类)和同一个包中的所有其他的类访问。
  4) public
  类中限定为public的成员,可以被所有的类访问。

你所说的能够访问是因为子类调用了父类的public的方法在父类中访问的父类私有的属性。
作者: 薛波    时间: 2012-3-14 11:06
你的问题说的不是很清楚,你指的访问也没有说个例子,
一般情况子类不能直接访问到父类的私有属性的,除非父类中提供公有的 get 方法访问该私有属性。

要么就是内部类可以访问到父类的私有属性。
再者就是反射当中也是可以的。
作者: 潘许超    时间: 2012-3-14 11:18
继承的特点;子类父类出现后类中成员的特点;加载的时候先加载父类,然后加载子类此时子类有两个引用this和super

类中成员this代表本类对象的引用,super代表父类对象的引用

super关键字

1变量:如果子类和父类中出现了非私有的同名成员变量时

子类要访问本类中的变量用this

子类要访问父类中的同名变量用super

super的私有方法和this的私有几乎一致

this代表的事本类对象的引用

super代表的事父类对象的引用

子类是继承了父类,所以继承父类的东西

在这个子类对象中this和super指向的同一个对象,就是子类


作者: OMG    时间: 2012-3-14 11:41
private 本类中的对象可以访问;
protected 本类和子类可以访问,与包无关;
default 本包内的所以类的对象都可以访问;
public 所有类的对象都可以访问。
这是有己及子,由内而外,逐步开放的对应修饰符。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2