Java接口
定义
在现实生活中,接口是某些企业和组织指定的一种约定或标准,规定了接口的大小、形状等,按照该约定设计各种设备。
java
中的接口作用和生活类似,它提供一种约定,使实现接口的类在形式上保持一致。
描述规范的数据类型,接口中只定义规范(不需要实现)
抽象类中可以有普通方法而接口中的方法默认都是抽象类,也可以说接口是一种特殊的
抽象类
,接口不能被实例化,而且没有构造方法
定义接口
格式:
public interface 接口名{//接口成员
}
举例
public interface USBInterface{public static final String NAME = "";//静态常量public void service();
}
接口中的方法默认都是抽象方法,所以可以省略
abstarct
修饰符接口中的方法默认都是
public
修饰的,所以可以省略public
接口中的变量只能是静态常量(
static final
),所以可以省略static final
,静态常量在定义时就要赋值,且无法改变。接口不能被实例化, 没有构造方法。
使用接口
接口的使用和抽象类一样,都是通过子类。子类通过implements
关键字实现接口,实现接口就必须实现接口中的抽象方法
public 类名 implements 接口名{实现方法普通方法属性
}
举例
public class USBDisk implements USBInterface{@Overridepublic void service() {System.out.println("service()");}
}
- 一个类可以实现多个接口,接口之间使用
,
隔开- 接口的实现类中,可以有普通方法
- 实现方法必须是
public
的
实现多个接口
java 中继承是单继承,使用extends
关键字;但是一个类可以实现多个接口,使用imple ments
,多个接口之间用,
隔开。
接口可以多继承, 一个接口可以继承多个接口
[修饰符] interface 接口名 extends 父接口1, 父接口2,...{常量定义方法定义
}
举例
public class Computer implements USBInterface, ChargeInterface{public void play() {System.out.println("play game");}@Overridepublic void charge() {System.out.println("充电");}@Overridepublic void service() {System.out.println("USB接口");}
}
一个类可以同时继承和实现接口,
extends
要在implements
之前。
public class LenovoComputer extends Computer implements USBInterface,ChargeInterface{}
接口与接口之间是继承关系,使用
extends
关键字。多个接口使用,
隔开
public interface USBC extends USBInterface,ChargeInterface{}
抽象类和接口类的区别
特性 | 接口 | 抽象类 |
---|---|---|
组合 | 可以在新类中组合多个接口 | 只能继承一个抽象类 |
状态 | 不能包含字段(静态字段除外,但不支持实例字段) | 可以包含字段 |
默认方法和抽象方法 | 默认方法不需要在子类里实现,它只能引用接口中的方法 | 抽象方法必须在子类里实现 |
构造器 | 不能有构造器 | 有构造器 |
访问修饰符 | 默认public | 可以用protected 和包访问修饰符 |
抽象类仍然是一个类,因此如果被创建的新类所继承,则该抽象类就应该是唯一被继承的
类。在创建新类的过程中可以实现多个接口。
在合理的范围内尽可能抽象