如果子类具有与父级中的私有变量同名的变量,将使用什么?

时间:2014-11-25 08:28:44

标签: java

我需要修改jar文件中某个类的某些功能。 因为我需要保留大部分功能,所以我想扩展所需的类并覆盖应该改变的方法。

但是有些变量被声明为私有,所以我无法访问它们。 因此,如果我在子类中声明一个具有相同名称的Object会发生什么? (见例)

package abc;

class Parent {
  private Object var;

  String func_1() {
      //do something to var
      func_2();
  }

  void func_2() {
    //do something to var
  }
}

孩子班:

package abc;

class Child extends Parent {
  private Object var;

  /* @Override */
  String func_1(){
      //do something to var
      func_2();    
  }
}

func_2会操纵父母的var还是孩子的var

2 个答案:

答案 0 :(得分:1)

func_2将操纵var Parent,因为您无法覆盖类成员,而func_2仅在Parent中实现。

另一方面,Child类中的任何代码都会操纵var类的Child

答案 1 :(得分:1)

私有成员仅在定义的类中可见。因此func_2将使用var类中的Parent