我已经读过某个对象无法调用静态方法...但是根据下面的代码mm
,对象正在调用public static void main1(String args[]){}
静态方法并显示输出。有人解释它为什么?
public class Mainmultiple{
public static void main(String args[])
{
System.out.println("hello");
Mainmultiple mm = new Mainmultiple();
mm.main1(args);//here object mm is calling static main1 method..??
}
public static void main1(String args[]){
System.out.println("Bye");
}
}
当我运行执行上面的代码时,我只是收到一条警告消息,要么将静态方法的访问权限更改为classname.staticMethod();
,要么从static
删除main1()
修饰符
但仍然需要输出仍然显示..请解释这种方法的工作
答案 0 :(得分:0)
我们可以使用该类的类名和该类的对象访问静态方法。 因为当我们创建一个类的对象(你要调用它的静态方法)来创建对象时,ClassLoader首先将.class文件加载到Method区域的JVM内存中(在jvm内存中它创建一个Class对象并存储它)。所以在创建对象之前,你可以使用它。创建对象时创建的对象与该内存关联。因此,您可以使用该对象轻松访问静态方法。 你有没有注意到课堂上的o / p ......?
For ex A is a class
class A{
.......
.......
}
A a1=new A();
s.o.p(a1);
o / p是这样的 -
一个@ 12f2312
在那个哈希码中有两个部分(A,12f2321),一个代表Class,另一个代表对象。所以我们可以使用对象访问静态方法