接口:
关键字:interface。
成员:
常量:public static final 修饰。
抽象方法:public abstract 修饰。
没有构造方法。
default修饰的方法:实现类可以去重写,重写后的方法不能再加default修饰。
static修饰的方法:只能通过接口名调用。
接口和类的关系:
实现。
支持多实现,中间用逗号隔开。
无需满足 is a 的关系:
接口是一套规范,接口中定义了必须要实现的功能。
关键字:implements。
创建实现某个接口的实现类时。
命名规范 接口名lmpl。
例如:interface Bird{}
实现类:class Birdlmpl implements Bird{}
接口和接口的关系:
继承。
支持多继承。
类和类的关系:
只能是单继承,可以多层继承。
内部类
内部类:
类里的成员,还可以是类,嵌套在类里面的叫内部类。
按照位置划分:
成员内部类:
方法外,类的里面,类似于成员变量声明的位置。
new 外部类().new 内部类().方法()
静态内部类:
方法外,类的里面,有static修饰。
new 外部类.内部类().方法()
局部内部类:
在方法内声明的类。
只能在方法内创建该内部类的对象。
匿名内部类:
对父类或接口的一种简写。
格式: new 父类/接口(){重写父类或接口的方法}
使用场景:
有无抽象方法或多个抽象方法:
对非抽象的父类简写。
对抽象的父类简写。
对接口简写。
lambda表达式
lambda
程序式编程,强调做什么。
格式:(形参列表) -> {方法体内容,具体做的事}
使用前提:只针对接口、该接口只有一个抽象方法。
省略方式:
1.形参类型可以省去。
2.如果形参只有一个,小括号可以省。
3.大括号里如果语句只有一条,分号,大括号,return都可以省略。