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

java中父类的private变量通过set,get操作的问题
子类可以继承public的set和get方法,但是他没有这个private变量~~~可以帮我举个例子讲下执行过程
------解决方案--------------------
父类:
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;
------解决方案--------------------
父类:
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;
------解决方案--------------------
引用:
Quote: 引用:

Quote: 引用:

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

是自类继承来的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。