【问题标题】:Access to Protected from other package in Java [duplicate]从Java中的其他包访问受保护[重复]
【发布时间】:2013-02-03 16:11:18
【问题描述】:

为什么我不能调用 protectedMethod() 甚至类 Parent 的对象调用它的方法?

package packageA;

public class Parent{
  protected void protectedMethod(){
     System.out.println("Hello Parent");
  }
}

在另一个包中:

package packageB;
import packageA.Parent;

Public Class Child extends Parent{
    public static void main(String[] args) {
        Parent parent = new Parent();
        parent.protectedMethod(); //illegal
        Child child = new Child();
        child.protectedMethod(); // legal       
    }
}

【问题讨论】:

  • 我真的不明白为什么人们会花时间对某人的问题投反对票并指责他们“重复”其他问题。为什么不花时间解决他的具体问题?
  • 对于重复的问题,我很抱歉。我只是对为什么它不能调用方法本身感到困惑。谢谢大家回复我
  • @Decave - 见this meta question。
  • @Decave 我个人告诉 OP 这个问题是重复的,因为 OP 想要一个答案,而原来的问题有一个答案,只需点击一下,有效地让每个人都免于烦恼回答问题(并放弃我可以通过抄袭原始答案而赢得的简单点)。我没有投反对票,也没有投票结束。

标签: java inheritance protected


【解决方案1】:

您的子类可以在它自己的父类上调用protectedMethod(),而不是在任何创建的独立父对象上。

因此, super.protectedMethod() 是合法的,但这似乎不是您所需要的。如果您想创建一个调用 Parent 对象上的方法的 Child 对象,而不是它自己的父对象,那么您必须将方法声明为 public。

【讨论】:

    猜你喜欢
    • 2011-03-11
    • 2011-04-02
    • 1970-01-01
    • 2023-03-25
    • 2015-03-05
    • 2011-07-30
    • 2014-04-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多