一、接口
1.什么是java中的接口
接口是多个类的规范
2.接口能实例化(创建对象)吗?
不能new
3.接口的常量定义和使用
[public] [static] [final] int NUM = 10;([ ]里面的可以省略,但是省略不代表没有 )
接口中的常量必须赋值,而且常量要大写
4.接口能不能有构造方法
不能(因为接口不能实例化)
5.接口之间的多继承
一个接口可以继承(extends)多个父接口
接口总结
在Java 9+版本中,接口的内容可以有:
1. 成员变量其实是常量,格式:
[public] [static] [final] 数据类型 常量名称 = 数据值;
注意:
常量必须进行赋值,而且一旦赋值不能改变。
常量名称完全大写,用下划线进行分隔。
2. 接口中最重要的就是抽象方法,格式:
[public] [abstract] 返回值类型 方法名称(参数列表);
注意:实现类必须覆盖重写接口所有的抽象方法,除非实现类是抽象类。
3. 从Java 8开始,接口里允许定义默认方法,格式:
[public] default 返回值类型 方法名称(参数列表) { 方法体 }
注意:默认方法也可以被覆盖重写
4. 从Java 8开始,接口里允许定义静态方法,格式:
[public] static 返回值类型 方法名称(参数列表) { 方法体 }
注意:应该通过接口名称进行调用,不能通过实现类对象调用接口静态方法
5. 从Java 9开始,接口里允许定义私有方法,格式:
普通私有方法:private 返回值类型 方法名称(参数列表) { 方法体 }
静态私有方法:private static 返回值类型 方法名称(参数列表) { 方法体 }
注意:private的方法只有接口自己才能调用,不能被实现类或别人使用。
二、多态(父类引用指向了子类对象)
1.使用多态的前提
a. 必须是在子类与父类之间的继承上
b. 类与接口的实现
2.多态的格式
父类名 对象名 = new 子类名(参数);
接口名 对象名 = new 实现类名(参数);
3.多态访问成员方法的规则
编译看左边,运行看右边
例如:Fu f = new Zi();
f.method();
当使用多态方式调用方法时,首先检查父类中是否有该方法(编译看左边),如果没有,则编译错误;如果有,执行的是子类重写后方法。
4.多态访问成员变量
编译看左边,运行还是看左边;
5.使用多态的好处
等号左边的对象只管调用,而不用关心右边是哪个儿子;
多态可以简化书写;