使用Child Object调用Parent类的私有方法

时间:2015-06-27 09:51:52

标签: java inheritance private

我需要调用Parent类中的私有方法,并且我创建了一个Child类,它正在扩展Parent类。现在我想通过Parent类的对象调用Child类中出现的私有方法,而不使用反射API。我怎么能这样做?

还允许我可以更改Parent类的结构。

class Parent{
  private void print(){
    System.out.println("Private Parent");
  }
}
class Child extends Parent{
}

4 个答案:

答案 0 :(得分:2)

只能在班级内访问private方法(例如,请参阅Java's tutorial about access control)。

有时可以通过使用反射或字节码操作来规避此规则,但是直接来说,您无法从子类访问private方法。如果您有此要求,请将其更改为protected

答案 1 :(得分:1)

您无法从子类调用private方法。 private方法仅对类本身可见。将方法更改为protectedpublic即可。

答案 2 :(得分:0)

我知道你能做到这一点的唯一方法 - 从子类直接调用超类的私有成员 - 是否子类嵌套在超类中。例如:

class Parent {
  private void parent() {}

  class Child extends Parent {
    private void child() {
      parent();
    }
  }
}

将编译。请注意,如果您想使Child类保持静态,则必须使parent()静态。

否则,您无法执行此操作 - private表示无法在该类之外访问。如果希望从子类调用它,则需要创建方法protected(或public)。你也可以很好地使它成为final,以防止它在子类中被覆盖。

答案 3 :(得分:0)

除了反射或使用内部类之外,无法使用子对象在Parent类中调用私有方法。