1、关键字

  • static关键字
  • final关键字
  • Java中的权限修饰符

2、接口
构造代码块
静态代码块
局部代码块
3、代码块
接口的介绍
接口的定义和特点
接口的成员特点
接口中成员方法的特点
4、枚举
枚举的本质
组成部分


1、关键字

1.1、static关键字

static意义:静态,java中的修饰符,修饰:成员方法、成员变量

  1. - 静态成员方法;
  2. - 静态成员变量。

static特点:

  1. - 静态成员被所类的所有对象共享
  2. - 随着类的加载而加载 , 优先于对象存在
  3. - 可以通过对象调用 , 也可以通过类名调用 , 建议使用类名

static注意点:

  1. - 静态方法中只能访问静态成员,要想访问非静态成员需要使用对象调用
  2. - 非静态方法可以调用非静态成员,也可以调用静态成员
  3. - 静态方法中不能存在关键词thisthis表示对象,静态成员随着类加载而加载,优先与对象;静态成员优先对象加载到内存,优先加载到内存的不能调用后加载到内存的。

1.2、final关键字

final意义:最终;java中的修饰符,修饰:类、方法、变量

  1. - 类:不能被继承,没有子类
  2. - 方法:方法不能被重写
  3. - 变量:最终变量——>自定义常量,只能赋值一次
  4. - final修饰变量初始化:1、直接赋值;2、在构造方法执行玩吧前赋值,如果有多个构造方法,每个构造方法都要进行赋值
  5. - 命名规范:每个字母都要大写,每个单词之间用下划线分割
  6. - 修饰的基本数据类型变量值不能修改
  7. - 修饰的引用数据类型地址不可改变,对象中内容可以改变

1.3、Java中的权限修饰符

public:公共的,当前模块内都可以访问
protected:受保护的的,同包下可以访问,不同包下只有子类可以访问
默认的:包私有,同包可以访问,不同包不可访问
pricate:私有的,只有本类可以访问


2、接口

2.1、意义:

如果一个类中都是抽象方法 , 那么这个类应该是定义规则的类 , 我们应该把此类定义成接口,接口是一种引用数据类型
作用 : 用于定义规则、程序的扩展性
关键字:interface
格式:public interface 接口名{ … }

2.2、接口的特点

  • 类与接口之间的关系是实现关系 , 用关键字implements进行连接
    • public class 类名 implements 接口名 { … }
  • 接口不能实例化
  • 接口的子类我们叫做实现类
    • 要么重写接口中所有的抽象方法
    • 要么实现类是一个抽象类
  • 注意 : 类与接口的关系是实现关系 , 一个类可以实现多个接口,调用逗号分隔 , 还可以继承一个类的同时 , 实现多个接口

    2.3、接口的成员特点

  • 成员变量 : 都是常量 , 默认修饰符 public static final

  • 构造方法 : 没有构造方法
  • 成员方法 : 只能是抽象方法 , 默认修饰符public abstract

    • 关于JDK8和JDK9版本对接口增加了一些方法新特性

      3.4、接口中成员方法的特点

      DK8版本之前 : 只能是抽象方法
  • JDK8版本 :

    • 默认方法
      • JDK8可以在接口中定义非抽象方法(带有方法体的方法) , 需要使用default进行修饰 , 其实就是默认方法
      • 作用 : 解决接口升级的问题
      • 格式 : public default 返回值类型 方法名(参数) { … }
      • 注意事项 :
        • 默认方法不是抽象方法 , 可以继承 , 也可以重写 , 重写需要去掉default关键字
        • public 可以省略 , default不能省略
        • 如果实现类实现了多个接口 , 有相同的方法声明 , 那么实现类必须重写该方法
    • 静态方法
      • JDK8可以在接口中定义静态方法 , 也是有方法体的方法
      • 作用 : 方便调用此功能
      • 格式 : public static 返回值类型 方法名(参数){ … }
      • 注意事项
        • 静态方法只能通过接口名调用 , 不能通过实现类名字和对象调用
        • public可以省略 , static不能省略
  • JDK9版本 :
    • 私有方法
      • JDK9中新增私有方法
      • 作用 : 抽取默认方法中共性内容
      • 格式 : private 返回值类型 方法名(参数){ … }
      • 注意 : 要想抽取静态方法中的共性内容 , 需要对私有方法加上关键字static

3、代码块

3.1、构造代码块

  1. - 构造方法块:用大括号表示,定义在类中、方法外
  2. - 执行时机 : 每次构造方法执行前, 都会执行构造代码块
  3. - 作用 : 抽取构造方法中共性内容

3.2、静态代码块

  1. - 静态代码块 : 在一对大括号前加上static关键字 , 定义在类中方法外
  2. - 执行时机 : 随着类的加载而加载 , 只加载一次
  3. - 作用 : 一般用于给静态成员初始化

3.3、局部代码块

  1. - 成员代码块 : 用一对大括号表 , 可以定义在任何的局部位置 , 方法中居多
  2. - 执行时机 : 正常执行(从上往下依次执行)
  3. - 控制变量的局部变量的声明周期

4、枚举

意义:当一个变量有几种固定可能的取值时,就可以将它定义为枚举类型
作用 : 更贴切 , 加见名之意
格式: public enum 枚举名{ … }
使用 : 通过枚举类型名直接引用枚举项即可,例如Sex.BOY、Sex.GIRL
注意 : 每个枚举项都相当于枚举的对象

4.1、枚举的本质 :

枚举其实本质上是一个类,每一个枚举项是本枚举类类型的一个对象。我们可以使用JDK提供的反编译命令,将枚举的字节码进行反编译查看

  1. - 枚举本质上就是最终类
  2. - 枚举项,就是枚举类的对象,而且是静态的常量。
  3. - 有私有的构造方法
  4. - 静态代码块
  5. - 继承了lang包下的Enum

4.2、组成部分 :

构造器,成员方法,成员变量等 , 但是定义的成分一定要在枚举项之后,而且最后一个枚举项必须要有分号结束。

5. 当日问题小结

5.1 当日遇到的问题


5.2 出现问题原因


5.3 解决问题方案