一、接口
(1)接口的定义:因为继承只能单继承,我们为了实现多继承,所以我们需要使用接口来实现多继承。
接口实际上是一种规范,连接接口的类或接口必须满足本接口的内容。
(2)接口的特点:
①接口使用interface关键字,而不是class。接口也是特殊的抽象类。
②接口里只能有抽象方法和常量。
③接口不能实例化,因为接口实例化没有任何意义
④接口不能提供构造方法。因为接口中只能有常量,不能有成员变量
(3)接口的使用:
①接口中的常量:默认使用修饰词public static final 所以书写时可以为:类型 常量名
②接口中的方法:默认使用public abstract 书写时可以为:返回值 方法名
③接口间的继承:接口与接口之间可以使用继承。
支持多继承
(4)接口的实现:
①子类需要实现接口中的所有抽象方法。
②使用implements关键字进行实现
③如果子类没有实现所有抽象方法,那么子类需要使用abstract来修饰
④子类可以实现多个接口,接口名之间使用逗号分开
二、多态:
面向对象的特征之一
使用:
(1)向上造型:父类型的变量引用子类型的对象
①父类型的变量指向不同的子类型对象,调用的功能有不同的实现。
如:Person p = new Stuent();
p.learn();
p = new Worker();
p.learn();
②不同的父类型变量指向同一个对象有不同的功能
Lenovo l = new Lenovol();
l.play();
InterP p = l;
p.play();
(2)向下造型:
①将父类型(接口)的变量赋值给子类型或者是接口的变量
Person p = new Student();
Student stu = (Student)stu;
stu.learn();
②向下造型会出现的异常:
在没有实例化的情况下进行强转并调用,运行期间有可能会发生类造型异常:java.lang.ClassCastException
我们可以使用instanceOf来避免错误
if(父类型变量 instanceOf 子类名){
子类名 子类变量 = (子类名)父类型变量;
}