日期:2014-05-20  浏览次数:20685 次

继承的私有成员,究竟是如何回事呢?
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());

        }
}



    对于a这个私有成员,子类进行getA,setA方法的使用,是在使用父类的那个私有成员么?可以使用,只是没有进行直接控制。
   这是说明子类中其实是存在这一个私有成员变量的,只是无法直接访问?
   

------解决方案--------------------
一定要纠正一个错误的观念,父类中的私有成员,不是不能被子类继承,而是子类无法直接访问!
所以子类进行getA,setA方法的使用,是在使用父类的那个私有成员。
------解决方案--------------------
父类的private属性是可以被子类继承的,只是对子类来说是隐藏的不可见的。继承关系中唯一不能被子类继承的就是构造器了。楼主其实已经说的很对了,父类中定义了属性a,在main方法中获取的a的值是子类中的,虽然子类中没有定义a,但是a确实是被继承了,才能被子类的对象调用。