给定的Java代码有什么问题

时间:2015-06-30 12:07:23

标签: java

代码是

public class ctorsandobjs {
    private int a;
    public int b;

    public ctorsandobjs(String arg)
    {
        System.out.println("I got " + arg);
    }

    public void add(int a,int b)
    {
        System.out.println("Addition is " + String.valueOf(a+b)); 
    }
    public static void main(String args[])
    {
        ctorsandobjs c = new ctorsandobjs("You");
        c.a = 12;
        c.b = 15;
        add(c.a,c.b);                      //compiler shows error here
    }
}

我正在使用Eclipse Luna IDE和JDK 8 ... 你能告诉我为什么编译器在这里显示错误..... "无法对ctorsandobjs"

类型的非静态方法add(int,int)进行静态引用

我是JAVA的新手...

如果可能的话建议解决方案

3 个答案:

答案 0 :(得分:0)

您不能从静态函数中引用非静态成员(private int a; public int b)。

答案 1 :(得分:0)

void serialize(serializer_t &serializer, abc_t &abc)方法不是静态方法,因此您需要在类add的实例上调用它,例如:

ctorsandobjs

答案 2 :(得分:0)

addnon-static方法,所以你必须从类的对象中调用它 你必须这样做:

c.add(c.a, c.b);