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
私有变量不是不可以继承吗?

解决方案 »

  1.   

    superclass 的私有变量变量对于 subclass是不可见的,只能通过继承的公有方法访问。
      

  2.   

    private public protected  只是对可见性的 修饰符,他们不能改变 变量的存在性。
      

  3.   

    私有变量是可以继承的,但是不能访问父类的该似有变量,这是因为private,protected,public这些事限定访问的,不是继承的
      

  4.   

    不知道怎么评价了,在Java中居然出现了友元,更有意思的居然出现了“继承私有变量”,楼主在子类中调用了父类的public的get方法嘛,然后通过这个get方法就可以返回父类的私有变量了。这个就是Java类的封装特性呀,如果不提供一个共有的get方法,外部是不能访问到类的私有变量的。不知道我的解释楼主能否明白!
      

  5.   

    我对程序的不理解之处,在于System.out.println(new   Felpersham().getDialingCode()); 的结果为1,而不是System.out.println(super.getDialingCode()); 的结果为1(这个很容易理解,使用super调用父类的公用方法,这是类的封装性的一种表现)。根据System.out.println(new   Felpersham().getDialingCode()); 的结果为1,请问new Felpersham()对象调用getDialingCode()返回的是子类的sDialingCode还是父类的sDialingCode?但根据楼上的回答有人说不可以继承,有人说可以继承,还是有点不懂。
      

  6.   


    Felpersham类中本身没有"getDialingCode()"方法,"new Felpersham().getDialingCode();"时,就是子类调用父类的方法,等效于super.getDialingCode();如果你在Felpersham类中也写一个同样的"getDialingCode()"方法,将Town类的此方法覆盖掉,那效果就不一样了。
      

  7.   

    这个其实就是 get 和set的功劳了  私有变量的确是不能直接继承的  但是 类里已经实现了 通过共有的方法获取这个变量的值
      

  8.   

    System.out.println(new Felpersham().getDialingCode()); 楼主,针对你这条语句,我给你拆开,你看看啊:Town  town = new FelPersham(); System.out.println(town.getDialingCode());
    在Java高级特性里面,有一句话是继承的特性,是父类引用指向子类对象,这里就是这么一回事了!
      

  9.   

    额 的确很多书在这里误导大家了  建议亲自去看看RTTI和对象切片到底是怎么一回事。老子说:你要用家里钱跟老子说嘛,老子给你。但你小子要是敢直接拿打断你的腿。。