Java如何在不同包中的父类中访问受保护的方法

时间:2016-01-28 19:29:35

标签: java eclipse

现有一个使用此方法的类

protected HttpResponse post(String route,String json,BasicNameValuePair ... parameters)抛出IOException

我正在另一个包中创建一个子类,但想调用此方法。我该怎么做?

此外,子类的父类是抽象的,因此我无法实例化它。

3 个答案:

答案 0 :(得分:1)

package package2;
import package1.Parent;
class Child extends Parent //assuming Parent is in package 1
{
   @Override
   protected HttpResponse post(...)
   {
       super.post(...)
       //Remaining stuff
   }
}

答案 1 :(得分:-1)

评论者将答案联系在一起。我想我错误地删除了那条评论:

Call protected method from a subclass of another instance of different packages

答案 2 :(得分:-1)

William,您可以从子类的任何方法调用该方法,前提是您用于调用它的引用是子类的类型或子类的类型(其中,基本原理在我的中解释)回答this问题)。作为简化示例,请考虑此父类

package parent;

public class Parent {

    protected void method() {
        System.out.println("parent.Parent.method() called");
    }
}

由Child类扩展

package child;

import grandchild.Grandchild;
import parent.Parent;

public class Child extends Parent {

    public void anyMethod(Child child, Grandchild grandchild) {
        this.method();
        child.method();
        grandchild.method();
    }
}
反过来,由孙子课延长。

package grandchild;

import child.Child;

public class Grandchild extends Child {
}

鉴于此类层次结构,此代码

Child child1 = new Child();
Child child2 = new Child();
Grandchild grandchild = new Grandchild();
child1.anyMethod(child2, grandchild);

将产生以下输出。

parent.Parent.method() called
parent.Parent.method() called
parent.Parent.method() called

因此,Child对象可以访问其自己的protected method()成员以及另一个Child实例的method()成员或Child子类的实例。但是,它不能使用类型为Parent的引用(除非它使用super)或Parent的不同子类(例如,Brother)调用该方法。

我希望这可以回答你的问题并让你知道你能做什么(或不能做什么)。如果没有,请告诉我。