Java -- 接口
基础语法
-
接口属于引用数据类型,编译之后也是字节码文件
-
接口完全抽象(抽象类是半抽象),可以理解接口是特殊的抽象类
-
接口的定义方法
[修饰符列表] interface 接口名{}
-
接口支持继承,而且是多继承
/* * 接口支持多继承 */ public class Test01{ public static void main(String[] args) { } } interface A{ } interface B{ } interface C extends A, B{ }
-
接口中只包含两部分:常量、抽象方法【不信可以尝试其他】
-
接口中的所有元素都是public修饰【都公开】
-
接口中的抽象方法定义可以不用public abstract修饰符省略
-
接口中抽象方法不能有方法体
-
接口中的常量可以省略public static final修饰符
/* * 接口 */ public class Test01{ public static void main(String[] args) { System.out.print(MyMath.PI); } } // 数学接口 interface MyMath{ // 常量 public static final double PI = 3.14; int K = 100; // 抽象方法 public abstract int sum(int a, int b); double sum(double a, double b); }
-
类与类之间是继承
extends
,类和接口之间是实现implements
-
类实现接口时不要忘了实现其中的抽象方法,抽象类实现接口可以不用
public class Test02{ public static void main(String[] args) { MyMathImpl test = new MyMathImpl(); // 面向接口编程 // 接口应用到多态中 int result1 = test.sum(10, 20); System.out.println(result1); int result2 = test.sub(20, 10); System.out.println(result2); } } // 数学接口 interface MyMath{ double PI = 3.14; int sum(int a, int b); int sub(int a, int b); } class MyMathImpl implements MyMath{ // 不能省略public,访问权限不能比实现接口中的实现方法更低 public int sum(int a, int b) { return a + b; } public int sub(int a, int b) { return a - b; } }
-
一个类可以实现多个接口
-
这种机制弥补了Java中的什么缺陷?
Java中类和类只支持单继承,但现实中更多的是需要多继承。
Java中的接口弥补了这一缺陷
-
继承与实现都在时,
extends
在前,implements
在后 -
接口通常提取行为动作
接口在开发中的作用
接口在开发中的作用,类似于多态在开发中的作用
多态:降低程序耦合度,提高程序的可拓展性,应该遵守OCP原则(对拓展开发,对修改关闭)
接口在开发中的作用:
-
面向抽象编程,应该是面向接口编程
有了接口就有可插拔【拓展性强】,不要焊死
-
接口可以解耦合
-
任何接口存在调用者和实现者,接口可以对两者进行调解