为什么行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(); }
}
答案 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();