面向对象高级 1:static

一、static关键字

1、是静态的意思,可以修饰成员变量和成员方法。

2、static修饰成员变量的分类:静态成员变量、实例成员变量。

(1)静态成员变量:有static修饰,属于类,与类一起加载,内存中只有一份,可以被共享访问。如果信息要被共享,只需要一份就行,比如:系统在线人数。

访问规则:建议用类名访问,即类名.静态成员变量,而且在同一个类中,访问静态成员变量类名可省略。理论上也可以用对象名.静态成员变量来访问(不推荐)

(2)实例成员变量:无static修饰,属于对象,每个对象中都存在一份实例成员变量,比如:name,age等。在每个对象中都有这些信息而且这类信息还不同时,应定义实例成员变量。

访问规则:只能用对象名.实例成员变量来访问。

3、static修饰成员方法

(1)静态成员方法:有static修饰,属于类,与类一起加载,可以被共享访问。同一个类中,访问静态方法类名可以省略不写,理论上也可用对象名.静态成员方法来访问(不推荐)

(2)实例成员方法:无static修饰,属于对象,必须用对象触发访问。如果这个方法属于对象,而且要直接访问对象的实例成员对象,则申明成实例方法。

访问规则:只能用对象名.实例成员变量来访问。

4.static应用知识

(1)工具类:里面都是静态方法,为了完成一个共用的功能

   好处:一次编写,处处可调用提高代码的复用和开发的效率。

   注意:建议把工具类的构造器私有化,因为工具类无需对外创建对象,它的方法都是静态方法,直接用类名访问即可。

(2)代码块:是类的五大成分(成员变量、成员方法、构造器、代码块、内部类)

分为静态代码块和实例代码块。

静态代码块:

      格式:static{}

      特点:属于类,与类一起优先加载,自动触发执行一次

      作用·:可以用于在程序启动时,进行静态资源的初始化操作

实例代码块(几乎不用):

         格式:{}

          特点:属于对象的,每次调用构造器构建对象前都会执行一次,再执行构造器

          作用:可用于初始化实例资源

(3)单例:是一种设计模式,为了解决某个问题。保证一个类对外只能产生一个对象

  分类:饿汉单例,懒汉单例

饿汉单例:特点:拿对象时,对象已经存在

                  实现步骤:1、构造器私有 ;2、定义静态成员变量存储一个对象

                  代码:

/**
 使用饿汉单例实现单例类
 */
public class SingleInstance {
   
    /**
     2、饿汉单例是在获取对象前,对象已经提前准备好了一个,
      这个对象只能是一个,所以定义静态成员变量
     */
    public static SingleInstance instance=new SingleInstance();
    /**
     1、把构造器私有化
     */
    private SingleInstance(){
    }
}

懒汉单例:特点:要拿对象时,才开始创建一个对象

实现步骤:1、构造器私有;2、定义静态成员变量,暂时不存对象。

代码

/**
 懒汉单例
 */
public class SingleInstance {

    /**
     2、定义一个静态成员变量负责存储一个对象。
     之家再一次,只有一份。
     注意:最好私有化,可以避免给别人挖坑
     */
    private static SingleInstance instance;
    /**
     3、提供一个方法,对外返回单例对象
     */
    public static SingleInstance getInstance(){
        if (instance==null){
            //第一次来拿对象:此时需要创建对象。
            instance=new SingleInstance();
        }
        return instance;
    }
    /**
     1、把构造器私有化
     */
    private SingleInstance(){
    }
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值