面向对象
接口
定义
1.引用数据类型
2.特殊的抽象类
3.接口为功能的集合,一般为抽象功能的集合
4.class定义类,interface定义接口
5.类只能单继承,接口多实现
6.继承与实现非常像
子类继承父类,有权直接使用父类的成员,可以不重写直接使用
实现类实现一个接口,拥有了接口中的功能,但是都为抽象功能,需要实现类自己重写,侧重点关注的重写
7.定义开发规范
8.实现解耦,降低耦合度
语法
jdk1.7及之前
公共的静态的常量
public static final 任意省略
公共的抽象的方法
public abstract 任意省略
jdk1.8及之后
新增
静态方法
被static关键字修饰的方法
通过接口名调用
默认方法
被default关键字修饰的方法
通过实现类对象调用
接口多态
使用
1.接口不能实例化
2.需要通过实现类进行实现 implements
3.使用: 通过具体的实现类对象调用
具体实现类
重写所有的抽象方法 + 按需新增
抽象实现类
按需重写 + 按需新增
需要具体的子类继承,重写抽象方法
4.接口可以多实现,类只能单继承
5.一个类先继承父类,后实现接口
6.类与接口之间 : 只能类实现接口,多实现的关系
7.接口与接口之间 : 只能继承不能实现, 一个接口可以多继承其他接口
内部类
分类
成员内部类
定义
内部类定义在外部类的成员位置
特点
具有类的特点,可以继承其他父类,实现其他接口,具有成员的特点,可以被成员修饰符修饰...
注意
成员内部类中不能定义静态内容,除了静态的常量
成员内部类中可以直接使用外部类的成员,包括私有的
外部类中可以通过成员内部类的对象调用成员内部类的成员
通过外部类对象去创建成员内部类的对象,通过成员内部类对象调用成员内部类的成员
私有内部类
定义
被private关键字修饰的成员内部类
注意
私有内部类中可以直接使用外部类的成员,包括私有的
在外部类中通过私有内部类的对象调用私有内部类的成员,包括私有的
私有内部类只能在当前外部类中使用,其他类中无法使用
静态内部类
定义
静态内部类中可以定义静态内容
注意
在静态内部类中可以直接使用外部类的静态内容,需要通过外部类对象使用外部类的成员
在外部类中可以通过静态内部类的类名调用静态内部类的静态内容,可以通过静态内部类的对象调用其成员内容
在其他类中可以通过外部类类名找到静态内部类,new 静态内部类对象访问其成员,通过静态内部类类名方法其静态内容
局部内部类
定义
定义在局部位置
注意
局部内部类中可以定义成员内容,不可能定义静态内容除了静态的常量
只能在局部内部类所在的方法中通过对象访问成员
在局部内部类中可以使用所在方法中的局部变量,可以使用外部类的成员
如果在局部内部类中使用所在方法中的局部变量(参数),要求局部变量被final修饰,如果jdk1.8以上版本默认被final修饰
匿名内部类
作用
简化实现类|子类,没有自己类本身作用的实现类|子类
内部类对象
实现类|子类+创建对象
匿名内部类对象
1. 匿名对象 : 只能在当前位置使用一次
实现类的类体 | 匿名内部类的类体
2.引用指向匿名内部类对象
接口多态 : 接口引用调用的为接口中定义的成员
3.匿名内部类对象作为方法的实参
lambda表达式
作用
简化匿名内部类对象
前提
函数式接口
函数式接口
接口中只有一个必须被重写的抽象方法
强制检查是否为函数式接口
@FunctionalInterface
语法
()->{}
()
接口中抽象方法的参数列表
->
lambda符号|箭头函数
{}
重写方法的方法体