面向对象加强——static关键字、代码块、单例模式
static静态关键字
static是静态的意思,可以修饰成员变量和成员方法
static修饰成员变量表示该成员变量只在内存中只存储(存储在方法区),可以被共享访问、修改。
public static onlinnumber=161;
//静态成员变量(有static进行修饰,属于类,内存中加载一次,可以被共享访问):
//常表示如在线人数信息、等需要被共享的信息,
访问的格式:
//一般用类名.静态成员变量(推荐)
//对象.静态成员变量(不推荐)
System.out.print(onlinnumber);//同一个类中静态成员变量的访问时可以省略类名
//实例成员变量(无static进行修饰,属于对象)
访问格式:
对象.实例成员变量
static 存在的不需要new对象也可以进行运用
static注意事项、
//1.静态方法只能访问静态的成员,不可以直接访问实例成员,可以间接访问
//2.实例方法可以访问静态成员,也可以访问实例成员
//3.静态方法不可以出现this关键字也不能用super//this代表的时当前对象
//4.类被加载的时候才会被创建
//5.静态方法不能直接调用非静态方法//反之可以 非静态方法可以调用静态方法
static工具类
//类中都是一些静态方法,每个方法都是以完成的一个公用的功能为目的,这个类用来给系统开发人员的使用
static工厂类
- 进行批处理
- 不需要
static的好处和要求
- 一次编写,处处可用,提高代码的重用性
- 建议对工具类的构造器进行私有化
- 工具类不需要创建对象
代码块
代码块分为:
静态代码块案例
//斗地主游戏
/*需求:
在启动游戏房间的时候,应该提前准备好54张牌,后续才可以直接使用这些牌数据
分析:
1.该房间只需要一副牌。
2.定义一个静态的ArrayList集合存储54张牌对象,静态的集合只会加载一份。
3.在启动游戏房间前,应该将54张牌初始化好
4.当系统启动的同时需要准备好54张牌的数据,此时可以用静态代码块完成
*/
//源码:
public class DiZhu {
public static ArrayList<String> card=new ArrayList<>();
/*
程序运行main之前放入54张牌,游戏可以直接使用
比较专业
*/
static {
//正式做牌,放入集合中
//定义一个数组进行存储,点数,和个数,类型
String[] sizes={"3","4","5","6","7","8","9","10","J","Q","K","A","2"};
String[] colors={"♣","♦","♥","♠"};
//先遍历点数
for (int i = 0; i < sizes.length; i++) {
//size[i];
//花色
for (int j = 0; j < colors.length; j++) {
String cards=sizes[i]+colors[j];
card.add(cards);
}
}
//加上大小王
card.add("大王
原文地址:https://www.jb51.cc/wenti/3285696.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。