public class father {
  private static int i=10;
father() {
System.out.println("Father is call");
}

}class sun extends father {
private int j=20;}class test {
public static void main(String args[]) {
  sun s = new sun();
  System.out.println(s.j);
}
}为什么我的sun子类连自己的变量j都不能访问?如果我想输出father类的变量i 如果保持父类的变量是private是不是不可能实现?我的子类继承了父类的变量i,拥有所有权,只是没有使用权,如果是这样的话我不修改父类的私有变量,我只是输出父类的私有变量可以吗

解决方案 »

  1.   

    private是指仅仅在该类(文件)中可以访问,其他任何类都不能访问,父子类也一样。一般都是写get,set方法访问和设置private变量
      

  2.   

    private表示私有,私有的意思就是除了class自己之外,任何人都不可以直接使用,私有财产神圣不可侵犯嘛,即便是子女,朋友,都不可以使用。 
    protected对于子女、朋友来说,就是public的,可以自由使用,没有任何限制,而对于其他的外部class,protected就变成private。 
      

  3.   


    我现在是在做实验测试,以后想把程序的拓展性写得更好就自然会去写get方法,但我现在想验证的是父类的私有成员变量能继承吗? 如果能继承,“我的子类继承了父类的私有变量i,拥有所有权,只是没有使用权” 这句话说法对吗?
      

  4.   

    为什么我的sun子类连自己的变量j都不能访问?
      

  5.   


    private 定义的变量不能从外部引用
    s.j这是从外部引用了
    private的目的是更好地隐藏变量,以免在外部程序中被不恰当地访问或修改
    如果要从外部访问,必须在sun类中为它定义getJ()方法,访问方式如:
    s.getJ()
      

  6.   

    标记为protect的成员可以被子类并且对于非子类的其他类的可见性相当于private