我需要修改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
?
答案 0 :(得分:1)
func_2
将操纵var
Parent
,因为您无法覆盖类成员,而func_2
仅在Parent
中实现。
另一方面,Child
类中的任何代码都会操纵var
类的Child
。
答案 1 :(得分:1)
私有成员仅在定义的类中可见。因此func_2
将使用var
类中的Parent
。