(1) 类构造块,this(),static,单例模式串讲

类构造块

  在类只用一对大括号包含的内容,构造所有的对象时都会执行的内容,如果某个类有好几个够赞函数,公共部分抽取出来,放到构造块中。

1 clas Boy
2     {
3         ...
4         {
5             syso("哭...");
6         }
7         ...            
8     }

  主要作用:

  一个类可能重载了很多的构造函数,这时不同的构造函数有些内容是公共的,这时需要把公共的内容分离出来省的每个构造函数厘里面都写一遍,这时就可以使用类构造块。

 


 

this()

  这时一种在内部调用自己的空构造函数的做法。注意构造函数之间的相互调用必须放在构造函数里面的第一句话,否则就会报错。

 


 

static 顾名思义表示静态的意思

  static的特点

    1、随着类的加载而加载,随着类的消失而消失

    2、优先于对象的存在,静态先存在,对象后存在

    3、被所有实例对象所共享

    4、可以直接被类名调用

 

  static 静态变量和实例变量的区别

 

    1、存放的位置不同

 

      类变量随着类的加载而存在于方法

 

      实例变量随着对象的建立而存在于堆内存

 

    2.生命周期的不同

 

      类变量的生命周期最长,随着类的消失而消失

 

      实例变量的生命周期随着对象的消失而消失

    static的优缺点

 

        优点:对对象的共享数据进行单独空间的存储,节省空间

 

        缺点:生命周期过长,一直维护,访问出现局限性,静态只能访问静态

 

 

        什么时候定义静态变量:当对象中出现共享数据时

 

        什么时候定义静态方法:如果功能内部没有访问到非静态的数据(对象的特有数据,那么功能就可以定义为静态方法)

 

 


 

 

单例模式 顾名思义 应当只有这么一个实例对象

 

  所谓模式,一些人总结出来的用于解决特定问题的固定的解决方案。

 

  单例模式,解决一个类在内存中只存在一个对象的目的,保证对象的唯一性

 

  1、为了避免其他程序建立过多的该类对象,禁止其他程序建立该类对象

 

  2.为了其他方便其他程序的访问,在本类中自定义一个对象

 

  3 .为方便其他程序对自定义类对象的访问,对外提供一些访问方式.

 

  创建方法:

 

    1.将构造函数私有化。这样别人就不能创建该类的对象。

 

    2.在类中创建一个私有的本类对象。

 

    3、提供一个用类名调用的共有的方法来获取唯一的私有对象。

 

class Single

{

    private static Single s = new Single();//恶汉式

    private Single()

    {

    }

    public static Single getSingle()

    {

        eturn s;

    }


}

class Single

{

    private static Single s = null;//懒汉式

    private Single()

    {

    }

    public static Single getSingle()

    {

        if(s == null)
        {
            s = new SIngle();

            return s;

        }

}                       

 

  懒汉模式public static Single s; 这样做的意思是,你的这个单例类别人不一定使用,所以没必要提前定义,可能你定义了别人用不到。推荐使用恶汉单例模式。懒汉单例模式,可能会出现线程方面的问题。

 

posted @ 2016-10-30 18:19  zhangoliver  阅读(213)  评论(0编辑  收藏  举报