Java 如何访问抽象类的受保护方法?

Java 如何访问抽象类的受保护方法?,java,selenium,webdriver,Java,Selenium,Webdriver,有没有办法访问抽象类的受保护方法 在selenium webdriver中,我无法访问类“SingleBrowserLocator”的受保护方法 有三种方法: 创建一个扩展抽象类SingleBrowserLocator的新类(必须在其中实现抽象方法) 搜索SingleBrowserLocator的非抽象子类,该子类使该方法成为公共的或具有调用受保护方法的其他公共方法 在SingleBrowserLocator的非抽象子类的同一个包中搜索另一个类,该子类提供对该方法的访问 如果该方法对您有用并

有没有办法访问抽象类的受保护方法

在selenium webdriver中,我无法访问类“SingleBrowserLocator”的受保护方法

有三种方法:

  • 创建一个扩展抽象类SingleBrowserLocator的新类(必须在其中实现抽象方法)
  • 搜索SingleBrowserLocator的非抽象子类,该子类使该方法成为公共的或具有调用受保护方法的其他公共方法
  • 在SingleBrowserLocator的非抽象子类的同一个包中搜索另一个类,该子类提供对该方法的访问
如果该方法对您有用并且在抽象类中受保护,那么更好或唯一正确的选择可能是您必须实现它的新子类(上面的第一个选择)。

如下所示:

public abstract class Foo {
    protected void method() { ... }
}

public class Bar extends Foo {
    public void method() {
        super.method();
    }
}

如果您不能创建子类(如上所述,或匿名),那么反射(或使用它的东西)是您的最佳选择。

您可以对其进行子类化吗?
受保护的
成员只能由相同包或子类中的类访问。也许读。(显然,你可以通过反射来访问它,但那是另一回事)。尝试将该类扩展到一个子类,我想调用受保护的方法吗?我已扩展此抽象类“SingleBrowserLocator”,但受保护的方法不可见。1)类浏览器扩展SingleBrowserLocator 2)public void browserTest(){Browser obj=new Browser();对象未显示受保护的方法。public method(){super.method();}它显示“public method()”的错误消息修正了…我忘记了返回类型。
public abstract class Foo {
    protected void method() { ... }
}

public class Bar extends Foo {
    public void method() {
        super.method();
    }
}