继承中私有变量问题
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的功劳了 私有变量的确是不能直接继承的 但是 类里已经实现了 通过共有的方法获取这个变量的值