如何在其他包的静态方法(ex main方法)中访问受保护的继承非静态方法?

时间:2017-09-13 17:31:21

标签: java static-methods non-static

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

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);

}

1 个答案:

答案 0 :(得分:0)

首先,您无法像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);
    }

}

希望这会有所帮助..