• (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; 这样做的意思是,你的这个单例类别人不一定使用,所以没必要提前定义,可能你定义了别人用不到。推荐使用恶汉单例模式。懒汉单例模式,可能会出现线程方面的问题。

  • 相关阅读:
    Webstorm(OnlineSearch2)自定义快捷搜索API文档手册
    cargo设置国内源
    win10安装rust和编译失败的解决办法
    pycharm打开项目找不到根目录的解决办法
    VM虚拟机/Linux上网
    idea启动springboot项目突然特别慢
    (亲测有效)MacPycharm打不开的解决方法
    vue使用webpack打包失败
    使用七牛云上传文件报错incorrect region, please use up-z1.qiniup.com
    Zookeeper3.5及以上启动时8080端口被占用
  • 原文地址:https://www.cnblogs.com/OliverZhang/p/6013651.html
Copyright © 2020-2023  润新知