静态和非静态错误

时间:2014-09-04 16:00:30

标签: java static

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

中的非静态方法g()进行静态引用

2 个答案:

答案 0 :(得分:0)

因为您无法在静态上下文中访问非静态方法 - 在本例中为main方法。

这将有效:

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

您必须在该静态main方法中创建B类的实例,然后调用g();

答案 1 :(得分:0)

你不能直接调用这样的非静态方法,你必须从B类中创建一个对象,然后对该对象使用方法g()。