接口
1、接口使用interface来定义
2、 Java中,接口和类是并列的两个结构
3、如何定义接口:定义接口中的成员
-
3.1 JDK7之前,只能定义全局常量和抽象方法
全局常量:public static final的的,但是书写时,可以省略
抽象方法:public abstract的 -
JDK8:除了定义全局常量和抽象方法外,还可以定义静态方法、默认方法(略)
4、接口中不能定义构造器,意味着接口不可以实例化
5、java开发中,接口都通过让类去实现(implement)的方式来使用
- 如果实现类覆盖了接口中的所有抽象方法,则此实现类就可以实例化
- 如果实现类没有覆盖接口中的所有抽象方法,则此类仍是一个抽象类
6、Java类可以实现多个接口,弥补了JAVA单继承的局限性
- 格式:class AA extends BB implements CC,DD,EE
7、接口与接口之间可以进行继承,而且可以进行多继承
public class InterfaceTest {
public static void main(String[] args) {
Plane plane = new Plane();
plane.fly();
plane.stop();
}
}
interface Flyable{
// 全局常量
public static final int MAX_SPEED = 7900;
int MIN_SPEED = 1;
// 抽象方法
public abstract void fly();
void stop();
}
interface Attacked{
void Attack();
}
class Plane implements Flyable,Attacked{
@Override
public void fly() {
System.out.println("飞机通过引擎去飞");
}
@Override
public void stop() {
System.out.println("驾驶员控制飞机停下来");
}
@Override
public void Attack() {
System.out.println("飞机也可以是战斗机");
}
}
8、接口的具体使用,体现多态性
9、接口,实际上体现了一种规范
public class USBtest {
public static void main(String[] args) {
Computer com = new Computer();
com.transferData(new flash());
com.transferData(new Priter());
}
}
class Computer{
public void transferData(USB usb){
usb.start();
usb.end();
}
}
interface USB{
void start();
void end();
}
class flash implements USB{
public void start(){
System.out.println("U盘开始工作");
}
public void end(){
System.out.println("U盘结束工作'");
}
}
class Priter implements USB{
public void start(){
System.out.println("打印机开始工作");
}
public void end(){
System.out.println("打印机结束工作'");
}
}