解决方案 »

  1.   

    父类:
    public class SuperClass {
        private static int value = 0;    public static void setValue(int value) {
            System.out.println("SuperClass.setValue(" + value + ");");
            SuperClass.value = value;
        }    public static int getValue() {
            System.out.println("SuperClass.getValue() return : " + value + ";");
            return value;
        }
    }
    子类:
    public class SubClass extends SuperClass {
        public static void main(String[] args) {
            System.out.println("SubClass.setValue(" + 1 + ");");
            setValue(1);
            System.out.println("SuperClass.getValue() return : " + getValue() + ";");
        }
    }
    执行结果:
    SubClass.setValue(1);
    SuperClass.setValue(1);
    SuperClass.getValue() return : 1;
    SuperClass.getValue() return : 1;
      

  2.   

    父类:
    public class SuperClass {
        private static int value = 0;    public static void setValue(int value) {
            System.out.println("SuperClass.setValue(" + value + ");");
            SuperClass.value = value;
        }    public static int getValue() {
            System.out.println("SuperClass.getValue() return : " + value + ";");
            return value;
        }
    }
    子类:
    public class SubClass extends SuperClass {
        public static void main(String[] args) {
            System.out.println("SubClass.setValue(" + 1 + ");");
            setValue(1);
            System.out.println("SubClass.getValue() return : " + getValue() + ";");
        }
    }
    执行结果:
    SubClass.setValue(1);
    SuperClass.setValue(1);
    SuperClass.getValue() return : 1;
    SubClass.getValue() return : 1;
      

  3.   

    父类的private属性对于子类是隐藏的。
      

  4.   

    所以你也不可能在子类中访问private的父对象成员
    要访问父对象的私有成员只能通过get set方法访问
    比如
    在没有重写父对象私有成员的get和set方法时
    默认为super.getXXX(),super.setXXX(###);当然你可以为子类也申明一个同名的成员如果要放开父类私有成员的访问限制,且不被其他类访问,应该用protected修饰
      

  5.   

    我的意思是子类调用getValue,是父类的getValue方法吗,怎么会调用父类的private的变量,
      

  6.   

    是自类继承来的getValue方法,并没有直接修改private变量,是通过函数修改的,这就是get set的用处。。
      

  7.   

    子类继承了父类的方法
    比如getValue();父类中是这样写的
    int getValue(){
       return value;
    }子类
    class Child extends Parent{}我们就可以通过
    Child c = new Child();
    int value = c.getValue();取到值但是我们并没有对child的getValue方法做覆盖,也就是Override
    它相当于子类的getValue方法中做了这样的过程class Child extends Parent{
        @Override
        int getValue(){
             return super.getValue();
        }
    }
      

  8.   

    回复于: 2014-03-04 22:18:16
    父类的private属性对于子类是隐藏的。
      

  9.   

    是自类继承来的getValue方法,并没有直接修改private变量,是通过函数修改的,这就是get set的用处。。class Father{
    private  int i=1;
     public void seti(int i){
     i=i;
     
     }
     public int geti(){
     return i;
     }}
    public class Test3 extends Father {
       int i=2;
       public static void main(String[] args){
       Test3 t=new Test3();
       
       System.out.println(t.geti());
      
       }
    }
    输出是哪个啊
      

  10.   

    是自类继承来的getValue方法,并没有直接修改private变量,是通过函数修改的,这就是get set的用处。。class Father{
    private  int i=1;
     public void seti(int i){
     i=i;
     
     }
     public int geti(){
     return i;
     }}
    public class Test3 extends Father {
       int i=2;
       public static void main(String[] args){
       Test3 t=new Test3();
       
       System.out.println(t.geti());
      
       }
    }
    输出是哪个啊
    输出1 ,调用父类的方法,父类中他知道i=1。
      

  11.   

    是自类继承来的getValue方法,并没有直接修改private变量,是通过函数修改的,这就是get set的用处。。class Father{
    private  int i=1;
     public void seti(int i){
     i=i;
     
     }
     public int geti(){
     return i;
     }}
    public class Test3 extends Father {
       int i=2;
       public static void main(String[] args){
       Test3 t=new Test3();
       
       System.out.println(t.geti());
      
       }
    }
    输出是哪个啊
    在子类中的get()和set()的体内的那个i在子类看来事super.i,参数i传递给super.i,同理get得到的也是super.i,由于无法直接访问父类私有变量,所以才有了get、set方法。
    其实在子类中,会把父类子类相同的变量加以区分的,比如super.i,和this.i,他们在内存中存储的位置是不同的,即使把父类中i改成public 答案还是1,原因就是存储域不同(啰嗦了)