Javase-08-03-接口和多态

106 阅读2分钟

一、接口

1、接口语法

public interface 接口名字{

}

2、接口里面写的内容

  • 成员变量:成员变量默认是由public static final 修饰的
  • 抽象方法:默认是由public abstract 修饰的,大多数情况下可以省略,直接从返回值开始写

image.png

3、注意事项

3、1接口与接口之间的关系

  • 接口与接口之间可以继承,并且支持多继承,此时接口拥有四个抽象方法,一个是自己的,还有三个是继承的

image.png

  • 接口里面没有构造方法,所以不能去创建对象
  • 请说接口与抽象类的关系

4、实现

4、1接口类实现语法

  • 接口的实现必须定义一个类去实现接口,并覆盖接口中的方法
  • 实现类要在类名后面加impl
public class 类名 **implements** 接口名 1,接口名 2{

覆盖接口中抽象方法

}

4、2实现注意事项

  • 一个类可以同时实现多个接口,覆写接口里面的所有抽象方法

image.png

  • 一个类同时继承一个类,并且实现多个接口,但是要先继承后实现
  • 抽象类实现接口,可以灵活地去选择实现哪些接口,不识现哪些接口,因为抽象类里面可以允许书写抽象方法

二、多态

1、概念

使用父类类型接收子类对象,使用接口接收实现类对象 都是多态

  • 编译看左边,运行看右边(Animal a = new Person();)

2、特点

  • 多态的写法不能直接使用子类特有的属性和方法
  • 即使是多态的写法,在方法调用顺序上依然是优先找子类本身,子类没有再去父类

3、多态体现的形式

使用父类类型接收子类对象,使用接口接收实现类对象 都是多态

  • 在方法的形参列表 使用父类类型接受子类对象
  • 在方法的返回值 方法的返回值类型是父类类型,return语句返回的是子类对象

4、引用数据类型数据转换

4、1小转大

就是多态的写法

4、2大转小

强制转换,多态的写法不能使用子类特有属性和方法,某些场景下就是要使用子类特有属性和方法

  小的数据类型 变量名 = (小的数据类型)大的数据类型的对象;

image.png