接口的默认修饰符是public
一般情况下,如果抽象类里面都是抽象方法,那么将抽象类改为接口
接口是抽象类的一种表现形式,是属于特殊的抽象类
接口里面可以有变量:为常量
一般情况下,固定的变量,不允许出现在普通类里面,出现在这里叫做魔法值,一般类里面不允许出现魔法值
如果里面常量,则将常量放到枚举,枚举就是一一列举
一半抽象类全是常量,则用枚举,如果全是抽象方法,则用接口
枚举得到值,定义一个变量,设置set/get方法,创建构造方法
普通类要实现接口里面所有抽象方法
大多数场景下,接口里面一般只有一个抽象方法
如果抽象类里面有普通变量,设置了全参构造方法,那么子类也需要定义全参构造方法
总结:接口目的:就是对行为的抽象,是一个特殊的抽象类
抽象类可以理解为由三大部分组成:普通类,枚举,接口
内部类:在一个类里面创建另一个类
内部类可以直接使用外部成员的方法,内部类可以理解为和外部类成员级别一致
外类访问内部类需要创建对象
无论内部类和代码块都是需要执行代码,只不过内部类可以进行调用
内部类的主要目的:就是为了创建属于自己的对象,为了不让别人直接调用,他是属于自己的
内部类可以理解为,外部类的一部分,是一个组合的关系,一般情况下是不可分割的
类和类之间的关系:
继承/实现 依赖 聚合 组合
lambda表达式
如果要对接口或者抽象类进行实例化,则会创建一个类,这个内叫做匿名局部内部类
像这种类,一般可以简写:lambda表达式:()->执行体
什么情况下不用写大括号?
if,else,for等如果后面只有一行代码
则可以省略大括号
如果参数只有一个,则可以省略小括号
如果参数只有一个,则可以省略数据类型,如果由多个,要么都省了数据类型,要么都写
lambda表达式:接口,而且只能有一个抽象方法