【问题标题】:How to access protected inherited non static method in static method(ex main method) of other package?如何在其他包的静态方法(前主方法)中访问受保护的继承非静态方法?
【发布时间】:2017-09-13 17:31:20
【问题描述】:

通过创建父类的实例,我们不能在其他包中访问它的继承方法,因为它不是直接继承。即使直接我们也不能使用非静态,因为我们的子方法是静态的,而父类方法不是。例如

package classacees;

public class Thread1 {

protected  double sub(double a, double b) {

return (a - b);

}

还有……

package example;

import classacees.Thread1;

public class Ece extends Thread1 {

        public static  void main(String[] args) {

double n=sub(3,2);  // error -> cant make a static reference to non static method.
System.out.println(n);

}

【问题讨论】:

  • 您能先回答一下,为什么不将sub 创建为静态,为什么在子类中使用静态方法(在您的情况下为main)?
  • 不清楚你的问题是什么。
  • 代替 double n=sub(3,2),试试 double n=Thread1.sub(3,2)
  • @nullpointer ,我的朋友问我同样的问题并指示我不要更改子类和父类代码。我该怎么回复他?
  • @Assafs 仍然出现错误,因为 Thread1 无法解析。

标签: java static-methods non-static


【解决方案1】:

首先你不能像double n=sub(3,2);这样直接调用实例方法;为此,您需要一个对象。

对于您的查询,您可以通过从子类的实例访问受保护的方法来做到这一点:

    public class Ece extends Thread1 {
    public static void main(String[] args) {
        Ece ece = new Ece();
        double n = ece.sub(4, 9);
        System.out.println(n);
    }

}

希望这会有所帮助..

【讨论】:

    猜你喜欢
    • 2014-12-19
    • 2012-07-17
    • 1970-01-01
    • 2018-05-30
    • 2022-06-25
    • 2011-06-26
    • 1970-01-01
    • 2011-03-11
    • 1970-01-01
    相关资源
    最近更新 更多