接口
1、定义:是一种标准,规则。
2、关键字:
1、interface :接口
public interface 接口名{}
2、implements :实现
public class 实现类 implements 接口名{}
3、使用:
a.实现类实现接口
b.重写接口中的抽象方法
c.创建实现类对象
d.调用重写的方法
接口的成员
1、成员变量
格式:public static final 数据类型 变量 = 值;
特点:不写public static 默认也有
注意:
a.被static final修饰的成员变量需要手动赋值
b.习惯上我们会将static final修饰的成员变量的名字大写
2、成员方法
抽象方法
1.定义格式:
public abstract 返回值类型 方法名(参数);
2.注意:
不写public abstract 默认也有
3.使用:
a.定义实现类,实现接口
b.重写抽象方法
c.创建实现类对象,调用重写的方法
默认方法
1.格式:
public default 返回值类型 方法名(参数){
方法体
return 结果
}
2.使用:
a.定义实现类,实现接口
b.默认方法可重写可不重写
c.创建实现类对象,调用默认方法
静态方法
1.格式:
public static 返回值类型 方法名(参数){
方法体
return 结果
}
2.使用:
接口名直接调用
默认方法和静态方法-> 都是可以作为临时加的一个小功能来使用
多态
1、前提:
a.必须要有字子父类继承关系或者接口实现关系
b.必须有方法的重写,多态玩的就是重写
c.new对象:父类引用指向子类对象
Fu fu = new Zi()
2、多态条件下成员的访问特点
2.1成员变量
看等号左边是谁,先调用谁中的。
2.2成员方法
看new的是谁,先调用谁的,子类没有,找父类。
3、多态弊端
### 不能直接调用子类中特有的方法
5.多态中的转型
5.1向上转型
5.2向下转型(目的:调用子类中特有的方法)
格式:子类类型 对象名1 = (子类类型)对象名
6.转型可能会出现的问题
1.如果等号左右两边类型不一致,就会出现类型转换异常(ClassCastException)
2.解决:
转型的时候加个判断,先判断一下类型
3.关键字:
instanceof -> 判断类型
4.使用:
对象名 instanceof 类型 -> 判断的是关键字前面的对象是否符合关键字后面的类型,返回值是一个boolean型