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

  • 相关阅读:
    MVC-- 网页中整、小数加法
    装饰器练习——Python
    父类对象对子类对象方法的调用
    Python----父与子的关系
    分析句子,以空格为分割找出单词
    模拟成绩数据库
    【算法竞赛-入门经典】圆柱体的表面积
    【算法竞赛-入门经典】计算并输出1+2的值
    前中后缀表达式
    代码基本结构
  • 原文地址:https://www.cnblogs.com/OliverZhang/p/6013651.html
Copyright © 2011-2022 走看看