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

  • 相关阅读:
    leetcode33. Search in Rotated Sorted Array
    pycharm 设置sublime text3 monokai主题
    django class Meta
    leetcode30, Substring With Concatenation Of All Words
    Sublime text3修改tab键为缩进为四个空格,
    sublime text3 python打开图像的问题
    安装上imesupport输入法依然不跟随的解决办法,
    sublime text3 的插件冲突弃用问题,
    sublime text3 BracketHighlighter括号匹配的设置
    windows 下wget的使用
  • 原文地址:https://www.cnblogs.com/OliverZhang/p/6013651.html
Copyright © 2011-2022 走看看