2017-09-13 762 views
-3

通过创建父类的实例,我们无法在其他包中访问其继承的方法,因为它不是直接继承。即使直接我们不能使用非静态,因为我们的子方法是静态的,而父类方法不是。前如何访问其他包的静态方法(ex main方法)中受保护的继承非静态方法?

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

} 
+0

你能不能先回答,为什么不创建'sub'作为静态,为什么要在子类中使用静态方法(在你的情况'main')? – nullpointer

+0

目前还不清楚你的问题是什么。 – jdv

+0

而不是双n =子(3,2),尝试双n = Thread1.sub(3,2) – Assafs

回答

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

} 

希望这有助于..