为什么ECLIPSE中不能定义时赋值

 package 用static输出对象的个数;
class A
{
    private static int cnt=0;
    public void f()
    {
        cnt++;
    }
     static int out(int i)
    {
        return cnt;
    }
}
public class 用static输出对象的个数 {
    public static void main(String[] args)
    {
        int i;
        A aa1=new A();
        A aa2=new A();
        i=A.out(1);
        System.out.printf("%d",A.out(1));
    }
}

为什么这样A aa1=new A();定义时,不会从类型中找到无参数的方法f(),从而能输出对象的个数(cnt),是mars的eclipse

图片说明

 class A
{
    private static int cnt=0;
    public void f()
    {
        cnt++;
    }
     static int out(int i)
    {
        return cnt;
    }
}
public class Main {
    public static void main(String[] args)
    {
        int i;
        A aa1=new A();
        A aa2=new A();
        i=A.out(1);
        System.out.println(A.out(1));
    }
}

我跑了下,可以的

A aa1=new A();
aa1.f();
这个不可以么?重新编译下。

A.f()要求f是静态的,加上static

感觉代码没问题,你重新编译下载试试。

i=A.out(1);
里面的A应该是实例化的对象,你改为aa1或aa2

图片说明

 class A
{
    private static int cnt=0;
    public A() {
         cnt++;
    }


    public void f()
    {
        cnt++;
    }
     static int out(int i)
    {
        return cnt;
    }
}
public class Main {
    public static void main(String[] args)
    {
        int i;
        A aa1=new A();
        A aa2=new A();
        i=A.out(1);
        System.out.println(A.out(1));
    }
}

A aa1=new A();
aa1.f();