我需要调用Parent
类中的私有方法,并且我创建了一个Child
类,它正在扩展Parent
类。现在我想通过Parent
类的对象调用Child
类中出现的私有方法,而不使用反射API。我怎么能这样做?
还允许我可以更改Parent
类的结构。
class Parent{
private void print(){
System.out.println("Private Parent");
}
}
class Child extends Parent{
}
答案 0 :(得分:2)
只能在班级内访问private
方法(例如,请参阅Java's tutorial about access control)。
有时可以通过使用反射或字节码操作来规避此规则,但是直接来说,您无法从子类访问private
方法。如果您有此要求,请将其更改为protected
。
答案 1 :(得分:1)
您无法从子类调用private
方法。 private
方法仅对类本身可见。将方法更改为protected
或public
即可。
答案 2 :(得分:0)
我知道你能做到这一点的唯一方法 - 从子类直接调用超类的私有成员 - 是否子类嵌套在超类中。例如:
class Parent {
private void parent() {}
class Child extends Parent {
private void child() {
parent();
}
}
}
将编译。请注意,如果您想使Child
类保持静态,则必须使parent()
静态。
否则,您无法执行此操作 - private
表示无法在该类之外访问。如果希望从子类调用它,则需要创建方法protected
(或public
)。你也可以很好地使它成为final
,以防止它在子类中被覆盖。
答案 3 :(得分:0)
除了反射或使用内部类之外,无法使用子对象在Parent
类中调用私有方法。