如果在编译时解析静态方法,那么对象实例如何能够调用静态方法?
class StaticCall
{
public static void main(String[] args)
{
String arr[]={"Class StaticCall","calls static method of class MyMainClass"};
MyMainClass h=new MyMainClass();
h.main(arr); //How is an instance able to call a static method?
System.out.println("this is StaticCall main");
}
}
class MyMainClass
{
public static void main(String[] args){
System.out.println(args[0]+" "+ args[1]);
}
}
Run Code Online (Sandbox Code Playgroud)
运行StaticCall类后,输出为
StaticCall类调用MyMainClass类的静态方法
这是StaticCall的主要内容
由于静态字段和方法属于Class对象,实例如何能够调用静态方法?此外,何时创建了Class对象,它是否首次访问其中的任何字段或方法?
Pet*_*rey 14
一个实例如何调用静态方法?
它没有.试试这个
MyMainClass h = null;
h.main(arr);
Run Code Online (Sandbox Code Playgroud)
并且您将看到该实例被忽略,因为它与此完全相同
MyMainClass.main(arr);
Run Code Online (Sandbox Code Playgroud)
扩展你的榜样...如果你有
class AnotherMainClass extends MyMainClass
{
}
Run Code Online (Sandbox Code Playgroud)
然后以下所有调用相同的方法.
AnotherMainClass amc = null;
amc.main(args);
((AnotherMainClass) null).main(args);
AnotherMainClass.main(args);
MyMainClass mmc = null;
mmc.main(args);
((MyMainClass) null).main(args);
MyMainClass.main(args);
Run Code Online (Sandbox Code Playgroud)