接口:
- 接口定义某一批类所需要的规范。规定类里必须提供某些方法。不提供实现
- interface
- 一个接口可以有多个直接父接口,但接口只能继承接口。
- 接口只能含有静态变量,方法(抽象方法,类方法,默认方法),内部类。无构造器和初始化块。
- 只能用public
- 成员变量自动添加public static final 修饰符,并且在定义时指定默认值。
- 接口里的默认方法要用default修饰,定义类方法要用static修饰。
- 接口可以多继承,接口不能用于创建实例,但可以用于声明引用变量类型。
- 类可以实现多个接口用implements. 多继承。
- 类要完全实现接口中定义的抽象方法,不实现的话这个类必须定义为抽象类。
接口和抽象类的区别:
- 接口只能有抽象方法和默认方法,抽象类里可以有普通方法且有方法体。
- 接口里不能定义静态方法,抽象类里可以定义静态方法。
- 接口里只能定义静态常量,不能定义普通成员变量,抽象类可以。
- 接口里不含构造器,抽象类里可以含构造器,抽象类里面的构造器不能创建对象,而是让子类调用构造器来完成抽象类的初始化。
- 接口不能有初始化块,抽象类里可以有,
- 一个类最多有一个直接父类,包括抽象类,但一个类可以有多个接口。
面向接口编程
- ’简单工厂模式
- 命令模式
内部类:为了更好地封装,不允许别的类访问该内部类。外部类。
- 内部类成员可以直接访问外部类的私有数据,外部类不可以访问内部类的实现细节。
- 匿名内部类适合用于创建仅需要使用一次的类,