接口
一种公用的规范标准,只要符合标准就可以通用(引用类型)
定义基本格式:public interface 接口名称{ 接口内容 }
接口中可以包含内容:
- 常量(必须赋值,而且一旦赋值,不能够改变)
接口中常量的定义
常量类似于“成员变量”,但是接口中的常量必须要用public static final
三个关键字来进行修饰
格式:public static final 数据类型 常量名称 = 数据值;
(final说明,数据不可改变)
- 接口中的值必须要赋值,不能不赋值
- 接口中的常量名称利用全大写,引用的时候直接通过接口名称.常量名去调用
- 抽象方法
格式:public abstract 返回值类型 方法名称(参数列表);
接口当中的抽象方法修饰符必须是两个固定的关键字(可省略):public abstract
接口抽象方法的使用步骤:
- 接口不能直接new,然后使用,必须有一个实现类来实现接口(类似于继承)
格式:public class 实现类名称 implements 接口名称 { }
- 接口的实现类必须覆盖重写接口中所有的抽象方法
- 创建实现类的对象,进行使用
- 默认方法
格式:public default 返回值类型 方法名称(参数列表){ 方法体 };
默认方法可以被实现类对象进行直接调用,也可以被实现类覆盖重写 - 静态方法
格式:public static 返回值类型 方法名称(参数列表){ 方法体 };
不能用过接口的实现类对象来调用静态方法,但是可以通过接口名称(接口名.方法名)直接调用 - 私有方法
用来解决接口中有多行代码重复使用
格式:private 返回值类型 方法名称(参数列表){ 方法体 };
定义好方法后,直接通过调用方法名来实现对方法的调用,注意修饰符是private,说明接口外部不能调用此方法
注意:一个类只能有一个直接父类,而可以有多个接口
- 类与类之间是单继承的
- 类与接口之间是多实现的,一个类可以实现多个接口
- 接口与接口之间是多继承的(一个接口可以继承多个接口)
多态性
面向对象三大特性:封装性、继承性、多态性
多态性:一个对象用多种形态,就叫做多态性(对对象而言,而不是对类而言)
代码体现多态性:父类引用指向子类对象
父类名称 对象名 = new 子类名称();
或者接口名称 对象名 = new 接口名称();
也就是子类被当作父类使用
多态的好处:无论右边new的时候换成哪个子类,左边调用方法都不会变
对象的向上转型:
格式:父类名称 对象名 = new 子类名称();
子类被当作父类使用,从小范围转向大范围
如果向上转型为父类后,子类本身的特殊方法就不能被使用
对象的向下转型:
格式:子类名称 对象名 = (子类名称)父类对象;
前提是,只有在向上转换前就是A,才能在向下转换时转换为A;
Instanceof
格式:对象 instanceof 类型
会返回一个boolean的结果值,也就是判断前面的对象能不能当做后面类型的实例