Java 使用子对象调用父类的私有方法

Java 使用子对象调用父类的私有方法,java,inheritance,private,Java,Inheritance,Private,我需要调用Parent类中存在的私有方法,并且我已经创建了一个扩展Parent类的Child类。现在我想通过Child类的对象调用在Parent类中出现的私有方法,而不使用反射API。我该怎么做 还有一个权限,我可以更改Parent类的结构 class Parent{ private void print(){ System.out.println("Private Parent"); } } class Child extends Parent{ } 不能从子类调用priva

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

还有一个权限,我可以更改
Parent
类的结构

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

不能从子类调用
private
方法。
private
方法仅对类本身可见。将方法更改为
受保护
公共

您不能从子类调用
私有
方法。
private
方法仅对类本身可见。将方法更改为
protected
public

只能从类内访问
private
方法(例如,请参见)


这个规则有时可以通过使用反射或字节码操作来规避,但直接来说,您无法从子类访问
private
方法。如果您有这样的需求,请将其更改为
受保护的

只能从类内访问
私有的
方法(例如,请参见)


这个规则有时可以通过使用反射或字节码操作来规避,但直接来说,您无法从子类访问
private
方法。如果您有这样的需求,请将其更改为受保护(protected)

我知道您可以这样做的唯一方法是直接从子类调用父类的私有成员,即子类嵌套在父类中。例如:

class Parent {
  private void parent() {}

  class Child extends Parent {
    private void child() {
      parent();
    }
  }
}
将编译。请注意,如果要使
子类
为静态类,则必须使
父类()
也为静态类


否则,您无法执行此操作-
private
表示无法在该类之外访问。如果希望从子类调用该方法,则需要将其设置为受保护的(或公共的)。为了防止它在子类中被重写,您也可以将其设置为final。

我知道您可以这样做的唯一方法是直接从子类调用父类的私有成员,即子类嵌套在父类中。例如:

class Parent {
  private void parent() {}

  class Child extends Parent {
    private void child() {
      parent();
    }
  }
}
将编译。请注意,如果要使
子类
为静态类,则必须使
父类()
也为静态类



否则,您无法执行此操作-
private
表示无法在该类之外访问。如果希望从子类调用该方法,则需要将其设置为受保护的(或公共的)。你也可以把它做成最后一个,为了防止它在子类中被重写。

无法使用子对象(反射除外)或使用内部类调用
父类中的私有方法。

无法使用子对象(反射除外)或使用内部类调用
父类中的私有方法内部类。

您似乎误解了的含义。如果您真的想这样做,那么您可以在父级中创建另一个公共方法来调用它的打印方法
父级的私有方法
可能具有微妙的状态,这可能依赖于其
公共
方法,并允许您调用的私有方法
Parent
会造成严重破坏。因此,为了好的目的,
private
应该保持
private
;)我想你明白我的意思。问问你的朋友他/她想访问的
家长的私有方法中有什么行为?考虑是否可以以接口的形式提取该行为。是的,私有方法只能在类内访问是正确的,但是是否有任何方法可以使用子对象调用父类内的私有方法。您似乎误解了的含义。如果您真的想这样做,那么您可以公开另一个方法方法调用它的打印方法父方法的私有方法可以有微妙的状态,可能依赖于它的公共方法,允许你调用父方法的私有方法可能会造成严重破坏。因此,为了好的目的,
private
应该保持
private
;)我想你明白我的意思。问问你的朋友他/她想访问的
家长的私有方法中有什么行为?考虑是否可以以接口的形式提取该行为。是的,私有方法只能在类内访问是正确的,但是否有任何方法可以使用子对象调用父类内的私有方法。是的,私有方法只能在类内访问,但是否有任何方法可以调用使用子对象的父类内的私有方法。是的,私有方法只能在类内访问是正确的,但是否有任何方法可以使用子对象调用父类内的私有方法。是的,私有方法只能在类内访问,但是否有任何方法可以调用使用子对象的父类内的私有方法。是的,您认为私有方法只能在类内访问是正确的,但是是否有任何方法可以使用子对象调用父类内的私有方法。您确定我们可以创建静态外部类,因为我不认为我们可以创建外部类静止的请解释一下,我没有说要使外部类保持静态。我说你必须使
parent()
-方法-静态。当然,如果这样的话,你可以使
parent
类静态