接口:
接口就是规范,定义的是一组规则。
接口的使用:
1.接口使用interface来定义
2.java中,接口和类是并列的两个结构
3.如何定义接口:定义接口中的成员
3.1 JDK7及以前:只能定义全局常量和抽象方法
》全局常量:public static final的(但是可以省略)
public static final int MAX_SPEED = 7900;
int MIN_SPEED = 1;
》抽象方法:public abstract的
public abstract void fly();
void stop();
3.2 JDK8:除了定义全局常量和抽象方法之外,还可以定义静态方法、默认方法
4.注意:接口中不能定义构造器,意味着接口不可以实例化
5.java开发中,接口通过让类去实现(implements)接口的方法来使用
如果实现类覆盖了接口的所有方法,实现类就可以实例化,反之实现类为一个抽象类
6.java类可以实现多个接口
格式:
class Aa extends Bb implements Cc,Dd
7.接口之间可以继承,而且可以多继承
8.接口的具体使用,体现多态性
package work.paidaxing;
public class InterfaceTest {
public static void main(String[] args) {
Compurter compurter = new Compurter();
//1.创建了接口的非匿名实现类的非匿名对象
Flash flash = new Flash();
compurter.transfer(flash);
//2.创建了接口的非匿名实现类的匿名对象
compurter.transfer(new Printer());
//3.创建了接口的匿名实现类的非匿名对象
USB phoneUsb = new USB() {
@Override
public void start() {
System.out.println("手机开始工作!");
}
@Override
public void end() {
System.out.println("手机停止工作!");
}
};
compurter.transfer(phoneUsb);
//4.创建了接口的匿名实现类的匿名对象
compurter.transfer(new USB() {
@Override
public void start() {
System.out.println("mp3开始工作!");
}
@Override
public void end() {
System.out.println("mp3停止工作!");
}
});
}
}
//4.创建一个电脑类,具备传输信息的功能
class Compurter{
public void transfer(USB usb) {
usb.start();
System.out.println("具体传输细节");
usb.end();
}
}
//1.定义一个USB接口
interface USB{
void start();
void end();
}
//2.定义U盘实现USB接口
class Flash implements USB{
@Override
public void start() {
System.out.println("U盘开始工作!");
}
@Override
public void end() {
System.out.println("U盘停止工作!");
}
}
//3.定义打印机实现USB接口
class Printer implements USB{
@Override
public void start() {
System.out.println("打印机开始工作!");
}
@Override
public void end() {
System.out.println("打印机停止工作!");
}
}
9.接口,实际上可以看做是一种规范
10.接口的应用
代理模式
工厂模式
面试题:抽象类和接口有哪些异同?