被abstract修饰的类为抽象类
被abstract修饰的方法为抽象方法
接口(interface)
为特殊抽象类,只能单继承,但是可以多实现
定义开发规范,实现解耦,降低耦合度
使用:
接口不能实例化,需要通过实现类implements实现
通过实现类对象调用
具体实现类:需要重写所有的抽象方法+按需新增
抽象实现类:按需重写+按需新增
内部类
类中定义的类为内部类
分为成员内部类,静态内部类,局部内部类,私有内部类,匿名内部类
成员内部类:
成员内部类中不能定义静态内容,除了静态的常量
可以直接使用外部类成员包括私有的
外部类可以通过内部类的对象调用成员内部类的成员
通过外部类的对象创建成员内部类对象,通过成员内部类对象调用成员内部类成员
私有内部类:
被private修饰的类为私有类
可以直接使用外部类成员包括私有的
在外部类中通过内部类对象调用私有内部类成员包括私有的
私有内部类只能在当前外部类中使用,其他类无法使用
静态内部类:
被static修饰的为静态类
可以定义静态类内容
在静态类中可以直接使用外部类的静态内容,外部类的成员需要通过外部类的对象使用
在静态内部类中可以通过静态内部类的类名调用静态内部类的内容,可以通过静态内部类对象调用其他成员内容
在其他类中可以通过外部类类名找到静态内部类,new静态内部类对象访问其他成员,通过静态类方法访问其静态内容
局部内部类:
定义在局部位置
局部中可以定义成员内容不可以定义静态内容,常量除外
只能在局部内部类所在的方法通过对象访问成员
局部中可以使用所在方法中的局部变量,可以使用外部类成员
匿名内部类:
作用:
简化实现类/子类,没用自己类本身作用的实现类/子类
匿名内部对象:实现类/子类+创建对现象
匿名对象:只能在当前位置使用一次
引用指向内部类对象
接口多态:
接口引用调用的为接口中定义的成员
lambda表达式
作用:简化匿名内部类对象
前提:函数式接口
什么是函数式接口?
接口中只有一个必须被重写的抽象方法
强制检查是否为函数式接口: @FunctionlInterface
语法:
( )->{}
():接口中抽象方法的参数列表
->lambda符号/箭头函数
{}:重写方法的方法体