- 接口interface
特殊的抽象类,引用数据类型,抽象功能的集合,接口可以多实现。 实现解耦,低耦合。
继承 子类直接使用父类的属性和方法,可以不用重写
接口 拥有了接口内的功能,抽象功能,必须重写,才能使用。
使用:接口不能实例化,需要通过实现类来实现。
一个类先继承父类,在连接接口。
类和接口,只能类实现接口,可以连多个接口。
接口和接口,只能继承不能实现,一个接口可以继承多个接口。
通过具体的实现类来实现接口。
具体实现类, 重写所有抽象方法,按需新增。
抽象实现类, 按需重写抽象方法,按需新增。
JDK1.8新增
静态方法 public static void 方法名(){} 可以通过接口名来调用。
默认方法 public default void 方法名(){} 只能通过实现类对象调用。
接口多态
接口名 变量名=new 实现类名() 不可以调用实现类中新增的方法,如果实现类中有重写方法调用重写方法。
- 内部类
类中定义类
成员内部类,私有内部类,静态内部类
局部内部类,匿名内部类
成员内部类:
定义在内中的成员位置,具有类的特点,可以继承可以连接接口。可以被修饰
注意:1.成员内部类中可以直接调用外部类成员的属性和方法。
- 成员内部类中不可以定义静态内容,除了静态常量。
- 外部类,可以通过创建成员内部类的对象,调用成员内部类的属性和方法。
- 通过外部类创建成员内部类的对象,通过成员内部类的对象调用。
外部类名.内部类名 变量名=外部类名.new 内部类名();
私有内部类:
不可以在其他类中调用,只能在当前外部类。
区分相同名字的变量: 外部类名.this. 内部类this. 局部
静态内部类
- 静态内部类中可以定义静态内容。
- 在静态内部类中可以直接使用外部类的静态内容,通过外部对象调用成员内容。
- 在外部类中,通过静态类名.直接调用静态内部类中静态内容,通过静态内部类对象调用,内部类成员内容。
- 在其他类中,可以通过外部类.内部类 找到静态内部类,创建内部类对象调用其成员内容。
局部内部类
- 定义在方法内,可以定义成员内容,不可以定义静态内容。
- 只能在局部类内部,通过对象访问成员内容。
- 可以使用方法内的局部变量,可以使用外部类的成员变量。
- 如果在局部类内部使用了,方法内的局部变量,Jdk1.8以后默认加final。
匿名内部类
实现类自己本身没有作用的
- Lambda表达式
写法1 ()->{}
写法2 方法体只有1句输出语句 ()-> {}可以省略
写法3 方法存在参数,参数类型可以省略 (name,age)->
写法4 方法存在一个参数, name-> ()可以省略
写法5 方法存在一句输出语句且为return age->age {return}可以省略