按对象调用静态方法......!

时间:2016-11-08 06:38:02

标签: java static static-methods

我已经读过某个对象无法调用静态方法...但是根据下面的代码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()修饰符 但仍然需要输出仍然显示..请解释这种方法的工作

1 个答案:

答案 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,另一个代表对象。所以我们可以使用对象

访问静态方法