设计模式之方法被调用的方式

来源:互联网 发布:js 处理json对象 编辑:程序博客网 时间:2024/06/05 16:32

 

其实刚学习java对方法被调用来调用去的思想有些模糊,调用一多了,就有点迷糊了,所以看完视频后,今天准备对方法被调用的方式做一些解释,可能话语没有那么专业化,但是还是为了学习。希望各位大侠多多指点。(结合代码和图看)

 

 class Single

{

     private Single(){}

     private static Single s = new Single(); 

     public static Single getInstance()  
    {
       return s;
    }

}

class SheJiMoShi
{
     public static void main(String[] args)
    {
       Single ss = Single.getInstance();

    }

 

/**

方法被调用有两种方式:对象和类名;

在没有对象条件下,如果用类名调用,则方法必须为静态,静态方法再访问类中的成员;

类中的成员变量一般进行私有化(通过方法访问);

如果在类中只有1个对象,则只需要用get方法就可以了,不需要再去用set方法;

上面代码中:Single ss = Single.getInstance();这是静态方法调用,类名调用getInstance()静态方法,它返回的是一个类类型ss的引用

 

在上面代码中程序执行的顺序是先读取主函数中的代码:Single ss = Single.getInstance();,他们的含义是:

(1)先加载Single类,Single类一加载后,在方法区只中就有了Single类的方法空间(见图),然后有一个静态的S变量,还有一个getSingle方法,当调用了方法后,就返回了一个S,S有一个值就是 new Single(),把new Single()赋给了变量S,而这个new Single()它在堆中是一个内存地址值,它是一个对象,即它必须在对内存中(见图)

(2)在调用getInstance()方法的时候,它返回 了一个S,将这个S赋给了SS(将getInstance里面的值s赋给了SS)(见图)

注意:

对象全在堆里面。

对象一建立就必须分配内存空间。

方法区中的S只是指向对象,引用了这个对象。

*/

}