gpt4 book ai didi

java - java中静态方法的调用是如何解决的?

转载 作者:行者123 更新时间:2023-12-02 12:23:18 25 4
gpt4 key购买 nike

如果静态方法在编译时解析,对象实例如何能够调用静态方法?

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]);
}
}

运行 StaticCall 类后,输出为

类 StaticCall 调用类 MyMainClass 的静态方法

这是 StaticCall 主要

由于静态字段和方法属于 Class 对象,实例如何能够调用静态方法?另外,Class 对象是什么时候创建的,是在第一次访问它的任何字段或方法时吗?

最佳答案

How is an instance able to call a static method?

事实并非如此。试试这个吧

MyMainClass h = null;
h.main(arr);

您将看到该实例被忽略,因为这与

完全相同
MyMainClass.main(arr);   
<小时/>

扩展你的例子......如果你有

class AnotherMainClass extends MyMainClass 
{
}

然后以下所有调用相同的方法。

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);

关于java - java中静态方法的调用是如何解决的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13383009/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com