一、接口
1.接口概念
在JAVA编程语言中是一个抽象类型,是抽象方法的集合
当一个类中的所有方法都是抽象方法的时候,就可以定义为接口
- 接口的意义
- 规则的定义
- 程序的扩展性
2.接口格式和特点
-
接口用关键字interface修饰
public interface 接口名 {}
-
接口和类之间是实现关系,不是继承关系,类实现接口用implements表示
public class 类名 implements 接口名 {}
-
接口的子类(实现类)
- 要么重写接口中的所有抽象方法 (抽象方法小括号就结束了,没有大括号)
- 要么是抽象类
-
类实现接口可以单个接口也可以多个接口,不同于继承
3.接口的成员特点
-
成员变量:必须是常量,因为系统会默认加三个关键字:public、static、final
-
构造方法:没有,所以实现类中的super指的是默认的object类中的方法;
-
成员方法:只能是抽象方法,系统会默认加两个关键字:public、abstract;
(只在JDK7和JDK7之前的版本中体现)
4.JDK8版本中的接口成员特点——默认方法
允许定义非抽象方法,必须使用default修饰,称为默认方法;
- 默认方法定义格式
格式:public default 返回值类型 方法名(参数列表) { }
范例:public default void show() { }
-
默认方法的作用:
解决接口升级的问题
-
接口中默认方法的注意事项:
1.默认方法不是抽象方法,所以不强制被重写。但是可以被重写,重写的时候去掉default关键字 2.public可以省略,default不能省略 3.如果实现了多个接口,多个接口中存在相同的方法声明,子类就必须对该方法进行重写
5.JDK8版本中的接口成员特点——静态方法
-
静态方法的定义格式
格式:public static 返回值类型 方法名(参数列表) { } 范例:public static void show() { }
-
静态方法的注意事项
静态方法只能通过接口名调用,不能通过实现类名或者对象名调用 public可以省略,static不能省略
6.JDK9版本中接口成员的特点-私有方法
-
私有方法的定义格式——不想被其他接口调用就可以私有化
格式1:private 返回值类型 方法名(参数列表) { } 范例1:private void show() { } 格式2:private static 返回值类型 方法名(参数列表) { } 范例2:private static void method() { }
-
接口中私有方法的注意事项
默认方法可以调用私有的静态方法和非静态方法
静态方法只能调用私有的静态方法
7.类和接口的关系
- 类与类的关系
- 继承关系,只能单继承,不能多继承,但是可以多层继承;
- 类与接口的关系
- 实现关系,可以单实现,也可以多实现,还可以在继承一个类的同时实现多个接口;
- 接口与接口的关系
- 继承关系,可以单继承,也可以多继承
二、多态
1.多态概述——面向对象的第三大特征
同一个对象,在不同时可变现出来的不同形态;
2.多态的前提
- 要有(继承\实现)关系
- 要有方法重写
- 要有父类引用,指向子类对象
3.多态的成员访问特点
-
构成方法
- 同继承一样,子类会通过super访问父类构造方法
-
成员变量
- 编译看父类,运行看父类
-
成员方法
- 编译看父类,运行看子类
4.多态的好处与弊端
结合成员方法的特性进行分析
-
好处
提高程序的扩展性。定义方法时候,使用父类型作为参数,在使用的时候,使用具体的子类型参与操作
-
弊端
不能使用子类的特有成员
5.多态中的转型
- 向上转型
父类引用指向子类对象就是向上转型
- 向下转型
- 父类引用转为子类对象,需要强制转换下父类类型
- 格式:子类型 对象名 = (子类型)父类引用;