十一、接口
1.接口的概念
初期理解:可以认为接口是一种特殊的抽象类,特殊之处:如果一个抽象类中的方法全部是抽象方法,Java中将该类使用接口来表示
接口是抽象方法的集合
2.接口的使用
1>定义
语法:
类的定义:使用class关键字
访问权限修饰符 class 类名{
}
接口的定义:使用interface关键字
访问权限修饰符 interface 接口名{
}
思考:在同一个Java文件中,public修饰了一个类,还修饰了一个接口,Java文件名和类名保持一致,编译可以通过吗?
答案:接口在底层还是按照类来处理的,所以不管是类还是接口,在同一个Java文件中,被public修饰的最多只能有一个,而且java文件名必须和public修饰的保持一致
3.接口的使用【见代码InterfaceUsageDemo01】
//演示接口的使用 class InterfaceUsageDemo01 { public static void main(String[] args) { //2.接口类似于抽象类,不能实例化对象 // 错误: SuperClass是抽象的; 无法实例化 //SuperInter sc = new SuperInter(); SubImp si = new SubImp(); si.show1(); si.show2(); si.show3(); } } //1.接口的定义 interface SuperInter { //6.定义成员变量 //默认是一个常量,修饰符是固定的:public static final int num = 10; //7.不能构造方法 /* public SuperInter() {} public SuperInter(int num) { this.num = num; } */ //5.接口中的方法默认都是抽象方法,默认修饰符是固定,是public abstract,在实现类中实现方法的时候, //为了满足重写的规则,修饰符一定是public void show1(); abstract void show2(); public void show3(); } //3.如果一个类想要使用接口中的方法,使用实现完成,使用implements关键字表示 //把实现了接口的类称为实现类 class SubImp implements SuperInter { //实现方法:仍然遵循重写规则 //4.如果要保证实现类是一个普通类【可以实例化对象】,必须实现接口中的所有的抽象方法 @Override public void show1() { } @Override public void show2() { } @Override public void show3() { } }
4.接口的实现和类之间的关系
类与类之间的关系是继承关系,类与接口之间的关系是实现关系
如果一个类要使用另外一个类中的方法,则继承,使用extends关键字
如果一个类要使用一个接口中的方法,则实现,使用implements【实现了接口的类称为实现类】
注意事项:
a.实现类需要实现接口中的所有的抽象方法,才能实例化对象去调用方法,如果只实现了部分,则实现类是一个抽象类
b.一个类能同时实现多个接口【多实现】,多个接口之间使用逗号隔开【实现类中就必须实现所有接口中所有抽象方法】
c.一个类能在继承了一个类的同时,还可以实现接口,但是,必须继承在前,实现在后
d.接口和接口之间的关系是继承,而且是多继承【注意区分类的继承】
总结:
1>接口的特点
a.接口是对外暴露的规则
b.接口是对程序功能的扩展
c.接口可以用来多实现
d.类与接口之间是实现关系,而且类在继承其他类的同时可以实现多个接口
e.接口和接口之间的关系是继承,而且是多继承
2>类,接口之间的关系以及特点
a.类与类之间是继承,单继承
b.类与接口之间是实现,多实现
c.接口与接口之间是继承,多继承
3>接口和抽象类的区别
a.抽象类是用于继承,而且是单继承
接口是用于实现,而且是多实现
b.在抽象类中可以定义普通方法,可以直接提供给子类使用
接口中的方法全部是抽象方法