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

继承中私有变量问题
abstract   class   Town{
  private   String   sDialingCode;  
  public   String   getDialingCode()   {
    return   sDialingCode;
  }
  public   void   setDialingCode   (String   sDialingCode)   {
  this.sDialingCode=sDialingCode;
  }
}
 
public   class   Felpersham   extends   Town   {  
  public   static   void   main(String   argv[]){  
    System.out.println(new   Felpersham().getDialingCode());
  }
  Felpersham(){  
    setDialingCode(   "1 ");
    System.out.println(super.getDialingCode());
  }
}
如何解解析结果为:
1
1
私有变量不是不可以继承吗?

------解决方案--------------------
private public protected 只是对可见性的 修饰符,他们不能改变 变量的存在性。
------解决方案--------------------
私有变量当然是不可以继承的,楼主的程序中,那个私有变量依然是属于父类,你调用的函数也是父类的,所以可以使用父类的私有变量
------解决方案--------------------
没有继承父类的私有变量,只不过是在子类里面调用了父类的公有方法去访问父类的私有变量
------解决方案--------------------
这也不是继承私有变量啊
------解决方案--------------------
不知道怎么评价了,在Java中居然出现了友元,更有意思的居然出现了“继承私有变量”,楼主在子类中调用了父类的public的get方法嘛,然后通过这个get方法就可以返回父类的私有变量了。这个就是Java类的封装特性呀,如果不提供一个共有的get方法,外部是不能访问到类的私有变量的。不知道我的解释楼主能否明白!
------解决方案--------------------
这个其实就是 get 和set的功劳了 私有变量的确是不能直接继承的 但是 类里已经实现了 通过共有的方法获取这个变量的值