接口
什么是接口?
接口是一种引用类型,是一种极端的抽象类(但并非抽象类),在接口中所有的方法都是抽象方法(JDK1.7)
到了JDK1.8之后,接口中允许出现默认方法和静态方法。
到了JDK1.9之后,接口中允许出现私有方法和私有静态方法。
(现在市面上普遍都是用JDK1.8进行开发)
接口的定义格式
类:class
枚举:enum
注解:@interface
接口:interface
格式:
public interface 接口名{
抽象方法
默认方法
静态方法
}
接口与抽象类的区别
1.接口和抽象类一样含有抽象方法,不能创建对象
2.抽象类是用来继承的;接口是用来实现的
抽象类的子类,接口的实现类 都统一叫子类
3.继承用关键字 extends;实现用关键字implements
格式
public class 实现类 implements 接口{
}
接口的多实现
一个类只能继承一个父类-----单继承
一个类可以实现多个接口-----多实现
(父类的正常方法如果和接口的默认方法同名,那么会优先使用父类的方法)
格式
public class 实现类 implements 接口名1,接口名2....{
}
注意事项
1.实现类需要重写所有接口中的所有抽象方法,如果有相同的抽象方法,那么实现类只需要重写一次
2.静态方法没有重写的概念
3.实现类可以选择重写,如果重写不能加default
4.如果有相同的默认方法,那么实现类必须重写一次
多态
什么是多态
顾名思义,他是一个对象的多种状态
前提
必须有继承或者实现
必须有方法的重写
体现
父类类型的变量 指向了 子类类型的对象
多态调用方法的特点
编译时,看父类
运行时,看子类
优点:当方法的参数是父类类型的变量时,那么调用方法就可以传入任意一个子类对象
然后调用多态的方法时,编译看父类,运行时实际调用的是传入的子类对象中方法
缺点:只能调用子父类共有的方法
缺点的解决方案
向下转型(类似于字符的由高向低强制转换)
Fu f=new Zi();
Zi z=(Zi)f;
可能出现的问题
多态可以是任意子类对象,转型时可能出现类型转换异常