静态方法主要在java中

时间:2016-06-28 11:48:10

标签: java compiler-errors

为什么行if (i == 0) { print(); }出现编译错误?是因为main是静态的,即使它在A的类中?

public class A {
        private void print() { System.out.print(foo() + " "); }
        public String foo() { return "AAA"; }
        public static void main(String[] args) {
              A[] arr = { new A(), new B() };
              for (int i = 0; i < 2; i++) {
/***/                  if (i == 0) { print(); }
}
}
}
public class B extends A {
       private void print() { System.out.println("%" + foo() + " "); }
       public String foo() { return "BBB"; }
       public void bar() { print(); }
}

2 个答案:

答案 0 :(得分:2)

存在编译器错误,因为您尝试从静态方法print调用非静态方法main。是的,main必须是静态的。

您需要创建A的实例,然后在该实例上调用print方法:

A a = new A();
a.print();

答案 1 :(得分:1)

print()是非静态的。这意味着它适用于A类的对象。您无法从main()调用它,因为它是静态的,静态方法属于该类。要拨打print(),您可以执行以下操作:

A a = new A();
a.print();