I学霸官方免费教程十七:Java面向对象之接口
接口
两个实体之间通信方式的规范,将内部操作和外部沟通分离,使其任意一方都能实现修改内部而不影响外界其他实体与其交互的方式。
接口使用关键字interface声明,一般会在接口名前加上大写的I作为前缀
语法格式:[public] interface I接口名{}
接口中的属性:只能是常量,默认不写:public static final修饰的,写也只能写这些关键字中的一个或多个,不能写其他的
接口中的方法:只能是抽象方法,默认不写:public abstract 修饰的,写也只能写这些关键字中的一个或多个,不能写其他的
接口中不能包含构造方法
接口支持多实现,一个类实现多个接口时,多个接口之间用英文格式的逗号隔开
子类:实现接口的语法格式:
class 子类名 implements 接口名{
//可以有自己的属性和方法,但必须重写父接口中定义的方法
}
例如:U盘和电脑之间使用USB接口通信,任何品牌任何容量的U盘,只要实现了USB接口,都可以与电脑通信,无论是哪台电脑只要有USB接口也都能与同一U盘通信
实例: package _interface; /** * 创建接口USB * @author 学霸联盟 - 赵灿 */ public interface IUSB { // 声明一个工作的方法 public void work(); } package _interface; /** * 创建U盘类,并实现USB接口 * @author 学霸联盟 - 赵灿 */ public class UDisk implements IUSB { // 必须实现接口中的方法 public void work() { System.out.println("U盘通过USB接口和外界通信"); } } package _interface; /** * 创建手机类,也实现USB接口 * @author 学霸联盟 - 赵灿 */ public class Phone implements IUSB { // 必须实现接口中的方法 public void work() { System.out.println("手机也可以通过USB接口和外界通信"); } } package _interface; /** * 创建计算机类 * @author 学霸联盟 - 赵灿 */ public class Computer { // 声明一个连接外部设备的方法,那么这个方法通过什么连接外部设备呢? // 通过USB接口连接外部设备,所以这里给这个方法加上USB接口作为参数 public void connectExternalEquipment(IUSB usbEquipment) { // 使用USB接口开始工作 usbEquipment.work(); } } package _interface; /** * 创建测试类 * @author 学霸联盟 - 赵灿 */ public class Test { public static void main(String[] args) { // 创建一个电脑对象 Computer computer = new Computer(); // 创建一个实现了USB接口的设备对象,这里是一个U盘对象 IUSB usbEquipment1 = new UDisk(); // 创建一个实现了USB接口的设备对象,这里是一个手机对象 IUSB usbEquipment2 = new Phone(); // 使用计算机调用连接外部设备的方法 // 至于传入的是哪个对象计算机并不关心,只要是实现USB接口的对象即可 // 传入的对象是谁,就调用谁里面的work方法 computer.connectExternalEquipment(usbEquipment1); computer.connectExternalEquipment(usbEquipment2); } } 输出结果: U盘通过USB接口和外界通信 手机也可以通过USB接口和外界通信
接口和接口之间只能是继承,接口不能继承类。
package _interface._interface; public interface IFather {} package _interface._interface; /** * 子接口只能使用关键字extends继承另一个接口 * 而不能使用implements实现另一接口 * @author 学霸联盟 - 赵灿 */ public interface ISon extends IFather{}
因为接口中的方法只能是抽象方法,而子类中又必须实现父类中的抽象方法,所以它的作用是对子类的一种规范,规定子类中至少要有哪些方法。
优点:可以多实现,代码规范性强
缺点:不能提供普通的方法,这就导致即使子类中出现共性的方法也无法服用代码
版权声明:本文为博主原创文章,未经博主允许不得转载。