2014-09-04 101 views
-2
public class B extends A{ 
    public int g(){ 
     int x = super.x; 
     int y = super.getOne(); 
     return x+y; 
    } 
    public static void main(String args[]){ 
     System.out.println(g()); 
    } 
} 

爲什麼我收到錯誤(在印刷線的左側):靜態和非靜態誤差

不能讓)從靜態參考非靜態方法克( B型

+0

由於無法對類型B的非靜態方法g()進行靜態引用,因此會出現該錯誤。 – 2014-09-04 16:01:59

+0

爲B創建對象 – 2014-09-04 16:02:42

回答

0

因爲您無法訪問靜態上下文中的非靜態方法 - 在這種情況下是main方法。

這將工作:

public static void main(String args[]){ 
    B b = new B(); 
    System.out.println(b.g()); 
} 

你有靜態的主要方法創建B級的一個實例,然後調用g();

0

你不能直接調用這樣的非靜態方法,你必須創建一個超出類B的對象,然後使用該對象的方法g()。