一、接口
1、接口语法
public interface 接口名字{
}
2、接口里面写的内容
- 成员变量:成员变量默认是由public static final 修饰的
- 抽象方法:默认是由public abstract 修饰的,大多数情况下可以省略,直接从返回值开始写
3、注意事项
3、1接口与接口之间的关系
- 接口与接口之间可以继承,并且支持多继承,此时接口拥有四个抽象方法,一个是自己的,还有三个是继承的
- 接口里面没有构造方法,所以不能去创建对象
- 请说接口与抽象类的关系
4、实现
4、1接口类实现语法
- 接口的实现必须定义一个类去实现接口,并覆盖接口中的方法
- 实现类要在类名后面加impl
public class 类名 **implements** 接口名 1,接口名 2{
覆盖接口中抽象方法
}
4、2实现注意事项
- 一个类可以同时实现多个接口,覆写接口里面的所有抽象方法
- 一个类同时继承一个类,并且实现多个接口,但是要先继承后实现
- 抽象类实现接口,可以灵活地去选择实现哪些接口,不识现哪些接口,因为抽象类里面可以允许书写抽象方法
二、多态
1、概念
使用父类类型接收子类对象,使用接口接收实现类对象 都是多态
- 编译看左边,运行看右边(Animal a = new Person();)
2、特点
- 多态的写法不能直接使用子类特有的属性和方法
- 即使是多态的写法,在方法调用顺序上依然是优先找子类本身,子类没有再去父类
3、多态体现的形式
使用父类类型接收子类对象,使用接口接收实现类对象 都是多态
- 在方法的形参列表 使用父类类型接受子类对象
- 在方法的返回值 方法的返回值类型是父类类型,return语句返回的是子类对象
4、引用数据类型数据转换
4、1小转大
就是多态的写法
4、2大转小
强制转换,多态的写法不能使用子类特有属性和方法,某些场景下就是要使用子类特有属性和方法
小的数据类型 变量名 = (小的数据类型)大的数据类型的对象;