二、三个修饰符
2.1 抽象类、抽象方法
- 抽象方法:被abstract修饰的方法,只有方法声明,没有方法实现
- 继承后,子类必须重写父类中所有的抽象方法,否则子类还是抽象类
- 抽象类中不一定有抽象方法,但有抽象方法的类一定是抽象类
2.2 静态成员、类加载
-
静态可以修饰属性和方法
-
静态属性是整个类共同特有的共享空间(一份),任何对象修改,都会影响其他对象
-
不必创建对象,可通过类名直接访问
-
静态方法不能直接访问非静态成员
-
静态方法可以继承,不能重写、没有多态
-
类加载:
- JVM首次使用某个类时,需要通过CLASSPATH查找该类的.class文件,将类信息加载到内存中,进行保存
- 加载时机:
- 创建对象
- 创建子类对象
- 访问静态属性
- 调用静态方法
- 主动加载:Class.forName(“全限定名”);
-
对象创建过程:
2.3 最终类、方法,常量
- final类:不能被继承
- final方法:不能被覆盖
- final变量:
- 基本类型常量:值不可变
- 引用类型常量:地址不可变
三、接口
3.1 什么是接口
-
接口是一种能力和约定,接口支持多实现,可为类扩充多种能力
-
使用***interface***关键字定义
-
没有构造方法,不能创建对象
-
只能定义公开静态常量、公开抽象方法
3.2 接口与类的异同
- 相同:
- 可编译成字节码文件
- 不能创建对象
- 可以作为引用类型
- 具备Object类中所定义的方法
- 不同:
- 所有属性都是公开静态常量,隐式使用public static final修饰
- 所有方法都是公开抽象方法,隐式使用public abstract修饰
- 没有构造方法、动态代码块、静态代码块
3.3 接口的应用
- 同父类一样,接口也可以声明为引用,并指向实现类对象
- 仅可调用接口中所声明的方法,不可调用实现类中独有的方法
- 可强转回实现类本身类型,进行独有方法调用
- 好处:
- 程序的耦合度降低
- 更自然的使用多态
- 设计与实现完全分离
- 更容易搭建程序框架
- 更容易更换具体实现
3.4 常量接口
- 将多个常用于表示状态或固定值的变量,以静态常量的形式定义在接口中统一管理,提高代码可读性
3.5 接口回调
- 先有接口的使用者,后有接口的实现者