Static静态关键字:
修饰成员变量,表示变量只在内存中存储一份,可以被访问修改
用类名访问最好,同一个类中访问可以省略类名
Static的变量就是类特有的,无须建立实例访问,private则需要建立实例访问
Static变量内存原理:静态变量在堆中
静态成员方法与实例方法调用原理同静态变量和实例变量一样,都是前者是属于类,后者属于实例对象
Static注意事项:
第三点因为this指代当前对象
实例方法就是属于对象的,所以可以访问实例成员
Static应用知识:
工具类: 类中都是一些静态方法,且把构造器私有化
代码块:
静态代码块:static{“code”} 优先运行 ,而且与类同时产生,不会随着new对象的同时重新运行一次
作用:初始化静态资源
实例代码块:{“code”}每次构建对象都运行一次
作用:用的很少
单例设计模式:
保证应用该模式的类永远只产生一个对象
饿汉单例:
在用类获取对象,对象已经提前创建好了
步骤:
1.构造器私有化
2.定义一个静态变量存储一个对象
懒汉单例:
需要该对象才创建
步骤:
1.私有构造器
2.定义私有静态变量存储对象,防止公开直接引用为空
3.提供返回单例对象方法
继承:
通过extends关键字,使得一个类与另一个类建立起父子关系
好处:提高代码复用性
继承特点:
子类可以继承父类私有成员,但是不能直接访问
子类不能继承父类的构造器,其有自己的构造器
子类对于父类的静态成员,应该理解为共享而不是继承,继承要是真正得到
多重继承会就近使用方法,如果想使用指定方法需要用super关键字 super.关键字
Object特点:
方法重写:
一模一样的方法声明,参数也要一致,只存在继承中,且私有方法,静态方法不能重写
@override重写注解:
代表重写,可以自动校验是否为正确重写,同时提高代码可读性
子类构造器:
例子:
子类构造器访问父类有参数构造器,需要特别标注:
Thsi与super:
权限修饰符:
不同包下的子类一定要用子类的名字创建对象,然后再引用父类的方法;
Final:
Public static final定义的是常量:
抽象类 抽象方法:
abstract修饰,抽象方法不写具体内容
抽象类一般作为父类,让子类继承,子类一定要实现父类的抽象函数
抽象类特征,注意事项:
Final和abstract关系: