目录
一.接口
二.类和接口的多种形式
三.接口和抽象类的区别
四.多态
五.多态中成员的特点
一.接口
接口概念
- 接口也是一种引用数据类型
- 接口的出现是为了弥补java中只有单继承的不足
接口的定义
- 与定义类的class不同,接口定义时需要使用interface关键字。
- 接口和抽象类一样,都不能创建对象。
- 接口编译之后也是生成 接口名.class 文件。
接口简单使用
- 类与接口的关系为实现关系,即类实现接口。实现的动作类似继承,只是关键字不同,实现使用implements。

接口中成员变量的特点
- 接口中可以定义变量,但是变量必须有固定的修饰符修饰,即public static final(不写默认添加)
- static可以是通过接口名.变量名来调用
- final修饰的变量不能重复赋值,因此该变量也称之为常量,后面我们会讲解static与final关键字

接口中成员方法的特点
- JDK1.7(包含1.7)以前接口中只能有抽象方法

- JDK1.8(包含1.8)接口中可以有默认方法(实现)
default方法可以被重写也可以不被重写

- JDK9(包含9)以后可以有私有实现方法
接口中的private方法只能在接口内部调用,不能被子类重写继承。


二.类和接口的多种形式
一个类可以实现多个接口

一个类继承另外一个类同时实现接口

父类实现接口并重写抽象方法,子类可以不重写直接继承

接口可以继承接口被一个类全部实现

三.接口和抽象类的区别
相同点:
- 都位于继承的顶端,用于被其他类实现或继承;
- 都不能直接实例化对象;
- 都可以包含抽象方法。
不同点:
- 一个类只能继承一个直接父类(可能是抽象类),却可以实现多个接口;(接口弥补了Java只能单继承的不足)
- 抽象类中可以定义所有子类共性功能,接口中可以定义拓展功能(部分子类的拓展功能)
四.多态
- 定义:同一个方法,不同对象调用,会自动变成不同的行为。
- Java中多态使用前提:需要存在继承或实现关系(子父类或子父接口) 。
- Java中多态使用:父类引用指向子类对象或父接口引用指向子实现类对象。
多态向上转型(子转父)
向上转型:当有子类对象赋值给一个父类引用时,便是向上转型,多态本身就是向上转型的过程。多态的向上转型分为以下几种格式
- 普通类向上转型的格式
- 格式:父类型 引用变量名= new 子类();

- 抽象类向上转型格式
- 格式:抽象父类型 变量名 = new 抽象类子类();

- 接口向上转型的格式
- 格式:父接口类型 变量名 = new 接口实现类();

多态向下转型(父转子)
向下转型:一个已经向上转型的子类对象可以使用强制类型转换的格式,将父类引用转为子类引用,这个过程是向下转型,向下转型的目的为了使用子类特有的方法
- 父类型同样可以是 普通类 / 抽象类 / 接口
- 格式:子类型 引用变量=(子类型)父类型引用变量

五.多态中成员的特点
多态成员变量访问特点
当父类和子类有同名成员变量时,多态调用:
编译:引用变量在所属类中是否有此变量,有编译成功,没有编译失败。
运行:调用是引用变量所属类的成员变量。

多态中成员方法访问特点
当父类和子类有同名成员方法时,多态调用:
编译:引用变量在所属类中是否有此方法,有编译成功,没有编译失败。
运行:调用是引用变量所指的对象所属类并运行对象所属类的成员方法。






