(1) 类构造块,this(),static,单例模式串讲
类构造块
在类只用一对大括号包含的内容,构造所有的对象时都会执行的内容,如果某个类有好几个够赞函数,公共部分抽取出来,放到构造块中。
clas Boy
{
...
{
syso("哭...");
}
...
}
主要作用:
一个类可能重载了很多的构造函数,这时不同的构造函数有些内容是公共的,这时需要把公共的内容分离出来省的每个构造函数厘里面都写一遍,这时就可以使用类构造块。
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; 这样做的意思是,你的这个单例类别人不一定使用,所以没必要提前定义,可能你定义了别人用不到。推荐使用恶汉单例模式。懒汉单例模式,可能会出现线程方面的问题。
(1) 类构造块,this(),static,单例模式串讲的更多相关文章
- 135、Java中的静态块,构造方法和构造块
01.代码如下: package TIANPAN; class Book { static String msg; // static属性,暂不封装 public Book() { // 构造方法 S ...
- 134、Java中的构造方法和构造块
01.代码如下: package TIANPAN; class Book { public Book() { // 构造方法 System.out.println("[A]Book类的构造方 ...
- angular2自学笔记(二)---路由、服务等八大主要构造块
angular的思想:总是把数据访问工作委托给一个支持性服务类. Angular 应用的:用 Angular 扩展语法编写 HTML 模板, 用组件类管理这些模板,用服务添加应用逻辑, 用模块打包发布 ...
- 0607pm克隆&引用类&加载类&面向对象串讲&函数重载
克隆class Ren{ public $name; public $sex; function __construct($n,$s) { $this->name=$n; $this->s ...
- Java中继承时静态块,构造块,构造函数的执行顺序
public class Father { static { System.out.println("Father静态块"); } { System.out.println(&qu ...
- static 类成员变量 和 static const类成员变量
1.使用static类的优点: (1)避免与其他类的成员或者全局变量冲突 (2)可以封装 (3)阅读性好 2.static 数据成员独立于该类的任意对象而存在 static数据成员的类型可以是该成员所 ...
- C++ 不能在类体外指定关键字static
C++ static 函数的问题 近日读 C++ primer 中static 一章 , 有这么一句话, “静态成员函数的声明除了在类体中的函数声明前加上关键字static 以及不能声明为const ...
- php笔记(二)PHP类和对象之Static静态关键字
PHP类和对象之Static静态关键字 静态属性与方法可以在不实例化类的情况下调用,直接使用类名::方法名的方式进行调用.静态属性不允许对象使用->操作符调用. class Car { pr ...
- C++ 类的继承五(类继承中的static关键字)
//类继承中的static关键字 #include<iostream> using namespace std; /* 派生类中的静态成员 基类定义的静态成员,将被所有派生类共享 根据静态 ...
随机推荐
- Spark:控制日志输出级别
Spark:控制日志输出级别 终端修改 在pySpark终端可使用下面命令来改变日志级别 sc.setLogLevel("WARN") # 或者INFO等 修改日志设置文件 ** ...
- pycharm 修改新建文件时的头部模板(默认为__author__='...')
pycharm 修改新建文件时的头部模板 默认为__author__='...' [省略号是默认你的计算机名] 修改这个作者名的步骤: 依次点击:File->Settings->Ed ...
- 使用python制作ArcGIS插件(5)其他技巧
使用python制作ArcGIS插件(5)其他技巧 by 李远祥 使用python做插件开发,除了了解ArcToolBox工具之外,还需要在了解ArcPy的相关函数和接口.只有掌握了这些,才可以顺利的 ...
- 纯CSS3动画:一棵跳舞的树
<!DOCTYPE html><head><meta http-equiv="Content-Type" content="text/htm ...
- 谷歌YSlow准则
谷歌YSlow准则 YSlow可以对网站的页面进行分析,并告诉你为了提高网站性能,如何基于某些规则而进行优化. 测试个人站点 通过测试个人站点可以获得下面的数据 23条准则 Make fewer HT ...
- 纪中集训 Day 3
这几天一直坚持写blog= =加油吧!! 早上醒来,说了"我要AK"(其实只是蒟蒻的妄想罢了QAQ) 然后为了不立flag,改成了我要rank 1 然后依旧是有一题不会做QAQ 好 ...
- MVC - 单点登录中间件
本章将要和大家分享的是一个单点登录中间件,中间件听起来高深其实这里只是吧单点登录要用到的逻辑和处理流程封装成了几个方法而已,默认支持采用redis服务保存session的方式,也可以使用参数Func& ...
- iOS上传代码到Github平台
对于开发人员来说,很多时候想把自己好的代码 demo放到一个公共平台,与大家交流,Github就是一个不错的平台,下面给大家说说Github的具体使用方法. 第一步.申请Github账号.https: ...
- 使用jQuery操作DOM
一.DOM操作分为3类 1.DOM Core DOM Core不是Javascript的专属品,任何一种支持DOM的编程语言都可以使用它.它的用途不仅限于处理一种使用标记语言编写出来的文档 2.HTM ...
- chrome浏览器美化插件:让你的浏览器页面冒水泡, 游小鱼儿
下载插件和效果图 这是一个让你的浏览器冒泡泡的插件, 浏览网页的时候仿佛置身于海底世界: 插件下载地址:http://files.cnblogs.com/files/diligenceday/chro ...