我有以下课程:
public class B {
public void print() {
}
public static void main(String[] args) {
B B = new B();
B.print();
}
}
Run Code Online (Sandbox Code Playgroud)
我想知道为什么编译器没有给出错误说它不是静态方法.当我们将对象与类相同时,它将如何区分类级别和实例级别?
因为您正在访问类的实例上的方法.顺便提一下,实例的名称与类名相同,但由于您没有具有此名称的静态方法,因此编译器假定正确 - 即实例方法.
如果你定义了方法static,那么它将再次假设唯一可能的事情 - static在B类上调用一个方法,因为实例没有这样的方法.
最终,您不能同时拥有同名static的非static方法和非方法.
| 归档时间: |
|
| 查看次数: |
783 次 |
| 最近记录: |