final关键字
概念
final 是最终的意思,可以修饰类、方法、变量。
修饰类是最终类,不能被继承。
修饰方法是最终方法,不能被重写。
修饰变量,只能赋值一次。
修饰引用类型变量,是地址值不能变。
修饰基本类型变量,是数值不能变。
public static final 修饰的变量 称为常量,所有字母大写。
权限修饰符
类别
private
默认/缺省/不写/default
protected
public
作用
被 private 修饰的属性只能本类中访问
默认不写 只能在本包中访问
被 protected 修饰后,只能在子类和本包使用
被 public 修饰后所有的类都可使用
static关键字
概念
静态的意思,它可以修饰成员方法,成员变量。
修饰的成员,称为类成员,优先于对象存在。
可以被类名直接调用,可以被对象共享。
静态只能访问静态。
内存特点
静态变量会随着类的加载而加载,类只加载一次,静态变量也只加载一次。
应用
Javabean不用
工具类设计的时候用静态关键字,方便调用,不用创建对象。
静态还可用设计单例模式。
单例设计模式
作用
保证一个类对外只能创建一个对象
饿汉单例
特点:
创建类的时候对象已经存在,不管是否使用
实现步骤:
1:私有化构造,目的是为了不让外界new,因为每次new都是新的对象
2:定义一个类变量,记住类的一个对象,不让外界new,自己new,以确保new一次定义变量的目的,完成自己new对象,使用 static 是为了让其随着类加载而加载一次,使用 private 修饰不让外界直接访问
示例代码:
public class App{
private static App app = new App();
private App(){}
private static App getApp(){
return app;
}
}
abstract 不能和 final static 一块使用
枚举
概念及定义格式
枚举是一个特殊类,一一列举的意思, 特点是可以限制对象个数。
往往使用它表达 指定对象,比如表达交通灯,表达四季。
定义格式:
修饰符 enum 枚举类名{
名称1,名称2,名称3;
//跟类一样 类能定义什么 这里能定义什么
}
匿名内部类
本质
创建一个 (匿名的) 子类对象。
直接 new 不用变量名接收
作用及定义格式
快速创建实现接口或者继承类的子类对象
定义格式:
new 接口/类(){重写方法}
使用场景
当方法参数是一个父类或者是一个接口的时,且需要重写方法不多,可以用匿名内部类代表其子类对象
代码块
概念
代码块是类的5大成分之一(成员变量、构造器,方法,代码块,内部类),定义在类中方法外。
在Java类下,使用 { } 括起来的代码被称为代码块 。
分类
静态代码块:
格式:static{ }
特点:需要通过static关键字修饰,随着类的加载而加载,并且自动触发、只执行一次。
使用场景:在类加载的时候做一些静态数据初始化的操作,以便后续使用。
构造代码块:
格式:{ }
特点:每次创建对象,调用构造器执行时,都会执行该代码块中的代码,并且在构造器执行前执行。
使用场景:初始化实例资源。