黑马程序员技术交流社区

标题: 继承的私有成员,究竟是如何回事呢? [打印本页]

作者: 雷丹    时间: 2013-10-23 23:23
标题: 继承的私有成员,究竟是如何回事呢?
  1. class Father{      private int a;      int getA()      {return a;}      void SetA(int a)      {        this.a = a;       }  } class Son extends Father{} Class Test{        public static void main(String[] args)        {             Son son = new Son();             son.setA(a);             System.out.println(son.getA());         }}
复制代码

作者: 雷丹    时间: 2013-10-23 23:24
class Father
{
      private int a;
      int getA()
      {return a;}
      void SetA(int a)
      {
        this.a = a;
       }  
}

class Son extends Father
{
}

Class Test
{
        public static void main(String[] args)
        {
             Son son = new Son();
             son.setA(a);
             System.out.println(son.getA());

        }
}

作者: 雷丹    时间: 2013-10-23 23:24
对于a这个私有成员,子类进行getA,setA方法的使用,是在使用父类的那个私有成员么?可以使用,只是没有进行直接控制。
这是说明子类中其实是存在这一个私有成员变量的,只是无法直接访问?
作者: 漫步人    时间: 2013-10-23 23:36
子类继承父类,也就说继承了父类的 成员变量和属性!
这样可以对子类继承过来的成员进行操作!希望对你有所帮助!加油!

作者: 终结者    时间: 2013-10-23 23:49
对于你上面的代码我感到有点疑惑,第一:为什么它接收一个整型参数而你传递一个a,第二:上面Set方法中S是大写而到下面却成了小写。当一个类继承另一个类时,子类继承了父类的所有成员和所有方法,子类也可以重写父类的方法
作者: qixing0918    时间: 2013-10-24 08:17
子类当然继承了父类的所有私有属性和方法,只是没有访问权限,只能通过方法间接访问,
就像即使是父类自己,在外部也是访问不了自己的私有属性的
extends声明了子类拥有基类中所有的域和方法
还有就是反射访问私有是 setAccessible(true),
这说明了什么 说明了继承了  只要设置访问权限就可以访问私有的了

作者: qixing0918    时间: 2013-10-24 08:28
我感觉 不是继不继承 应该是继承了什么  我感觉子类其实是拥有父类的一个引用 所以拥有父类的一切 父类在其他类中也必须要通过方法才能访问私有变量
子类要想访问私有的 必须通过这个引用 反射得到一个复制的类(跟父类一样) 再通过设置权限 才能访问
作者: 杨增坤    时间: 2013-10-25 20:24
下次,一定要注意排版哦 亲,谢谢合作!




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