1.static :
static是什么
修饰符 修饰变量 方法
表示方法
(推荐)类.类变量/类方法 可以用对象名.类方法/类变量
代码块
代码块:静态代码块,实例代码块,(类中方法外,初始化) 局部代码块(限制变量的作用域)
细节
静态只能访问静态
应用
工具类 : 构造器私有化 需要用的方法静态化 (不用创建对象,节省内存空间 Arrays,Collections等)
2.设计模式-单例:
设计模式:处理该种问题的最优解
单例设计模式 :保证一个类只创建一个对象 用于任务管理器,等重要
单例的解释:
一个静态变量随着类的消亡而消亡,如果该类自己创建一个静态成员对象,那么该静态成员对象随着该类的消亡而消亡,也就是该对象只能由该类生成,或者说该类只能创建该类
单例表示方法:
(饿汉/懒汉):
饿汉有可能会浪费内存空间
懒汉不会浪费内存空间
1.构造器私有化
2.创建一个类变量来存储该类的对象
3. 提供一个访问该类变量的类方法
如何解决线程安全
饿汉式单例 JVM 在底层就实现了 线程同步锁获得 满足线程安全
懒汉式单例需要手动加锁 用synchronized修饰 会出现效率低下的问题
懒汉式单例用dcl 更保险 Double Check Locking 双检查锁机制 新的关键字 volatile
public class MySingleton {
//使用volatile关键字保其可见性
volatile private static MySingleton instance = null;
private MySingleton(){}
public static MySingleton getInstance() {
try {
if(instance != null){//懒汉式
}else{
//创建实例之前可能会有一些准备性的耗时工作
Thread.sleep(300);
synchronized (MySingleton.class) {
if(instance == null){//二次检查
instance = new MySingleton();
}
}
}
} catch (InterruptedException e) {
e.printStackTrace();
}
return instance;
}
}
3.extends
A extends B : 减少重复代码的编写,提高代码的复用性,提升开发效率,提高可维护性(通用)
权限修饰符:private < 包私有 < protected < public
java中不支持多继承,支持多层继承
方法重写的注意点 :
1.同名同参数 返回值类型(仅限引用类型满足,基本数据类型不满足,比如不能用int来接收long的类型 )小于等于父类的方法
2.子类访问权限必须大于等于该父类的权限(public > protected>包私有 )
3.私有方法,静态方法不能重写
总结:声明({}前的内容都是声明 权限修饰符,返回值类型,方法名,形参列表 )不变,重新实现
方法重写的应用:
子类对自己继承的方法不满意的时候对父类方法进行重写(Object 的toString)
super 关键字
子类构造器都会先调用父类的构造器,第一行代码默认会有一个super(),再调用自己的构造器,如果父类有无参构造器 默认是无参的构造器,如果父类没有无参构造器,super(...)需要手动写。
目的:当创建对象时,父类的还是子类的成员变量都能进行初始化
子类构造器可以通过调用父类构造器,把对象中包含父类这部分的数据先初始化赋值,再回来把对象里包含子类这部分的数据进行初始化赋值。
this() 和super() 共存