一、接口概念
1、概念:
接口相当于特殊的抽象类,定义方式、组成部分与抽象类类似。使用interface关键字定义接口。
2、特点:
- 没有构造方法,不能创建对象。
- 只能定义:公开静态常量、公开抽象方法。
案例演示:自定义接口。
public interface MyInterface {
//接口中:只能定义公开的静态常量和公开抽象方法
//没有构造方法、动态、静态代码块
public static final int a = 10;
public abstract void show();
}
3、和抽象类区别
1.相同点:
- 不能创建对象。
- 可以作为引用类型。
2.不同点:
- 所有属性都是公开静态常量,隐式使用public static final修饰。
- 所有方法都是公开抽象方法,隐式使用public abstract修饰。
- 没有构造方法、动态代码块、静态代码块。
4、接口应用
1.接口是一种能力和约定。
Java为单继承,接口使得子类的对象可以被转换为除了父类之外的更多类型(即接口类型)。
实现类实现多个接口
2.实现接口的注意事项:
- 任何类在实现接口时,必须实现接口中所有的抽象方法,否则此类为抽象类。
- 实现接口中的抽象方法时,访问修饰符必须是public。
- 同父类一样,接口也可声明为引用,并指向实现类对象。
二、接口多态
例:
public class Test {
public static void main(String[] args) {
//抽象类作为引用
Animal a = new Dog();//将狗当做动物看
a.eat();
a.sleep();
//接口作为引用
Swimmable s = new Dog();//将狗当做能游泳的看
s.siwm();
Dog dog = new Dog();//将狗当做狗的看
dog.eat();
dog.sleep();
dog.siwm();
}
}
三、接口与类的关系
1、类与类:
- 单继承
- extends 父类名称
2、类与接口:
- 一个类可以实现多个接口,implements 接口名称1 , 接口名称2 , 接口名称n
- 一个接口可以有多个实现类
3、接口与接口:
- 多继承:一个接口可以继承多个接口
- extends 父接口1 , 父接口2 , 父接口n
四、常量接口
将多个常用于表示状态或固定值的变量,以静态常量的形式定义在接口中统一管理,提高代码可读性。
例:public interface Constants {
//QQ的状态 接口常量 --- > 枚举类型
public static final int ZAI_XIAN = 100; //在线
public static final int YIN_SHEN = 200; //隐身
public static final int LI_XIAN = 300; //离线
public static final int Q_WO = 400; //Q我
public static final int MANG_LU = 500; //忙碌
}
int num = 100;
switch (num) {
case Constants.ZAI_XIAN:
System.out.println("在线的代码");
break;
case Constants.YIN_SHEN:
System.out.println("隐身的代码");
break;
case Constants.LI_XIAN:
System.out.println("离线的代码");
break;
default:
break;
}
五、接口设计思路
六、接口好处
- 程序的耦合度降低。
- 更自然的使用多态。
- 设计与实现完全分离。
- 更容易搭建程序框架。
- 更容易更换具体实现。