2017-09-13 760 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); 
    } 

} 

希望這有助於..