A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

为什么继承中,子类可以访问父类的私有变量?

5 个回复

倒序浏览
不可以访问的  既然是父类私有的 就应该用 private   那样子类是不可以访问的
给你看下子类访问父类的关系
修饰符        类内部        同一个包        子类          任何地方
private            yes   
default            yes               yes
protected        yes               yes                  yes
public             yes              yes                  yes                 yes
回复 使用道具 举报
当然不能,私有的只能在本类中才可以访问 。
    1) private
  类中限定为private的成员,只能被这个类本身访问。
  如果一个类的构造方法声明为private,则其它类不能生成该类的一个实例。
  2) default
  类中不加任何访问权限限定的成员属于缺省的(default)访问状态,可以被这个类本身和同一个包中的类所访问。
  3) protected
  类中限定为protected的成员,可以被这个类本身、它的子类(包括同一个包中以及不同包中的子类)和同一个包中的所有其他的类访问。
  4) public
  类中限定为public的成员,可以被所有的类访问。

你所说的能够访问是因为子类调用了父类的public的方法在父类中访问的父类私有的属性。
回复 使用道具 举报
你的问题说的不是很清楚,你指的访问也没有说个例子,
一般情况子类不能直接访问到父类的私有属性的,除非父类中提供公有的 get 方法访问该私有属性。

要么就是内部类可以访问到父类的私有属性。
再者就是反射当中也是可以的。
回复 使用道具 举报
继承的特点;子类父类出现后类中成员的特点;加载的时候先加载父类,然后加载子类此时子类有两个引用this和super

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

super关键字

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

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

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

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

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

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

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

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

回复 使用道具 举报
private 本类中的对象可以访问;
protected 本类和子类可以访问,与包无关;
default 本包内的所以类的对象都可以访问;
public 所有类的对象都可以访问。
这是有己及子,由内而外,逐步开放的对应修饰符。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马