1一、 为什么需要接口?
2 Java中当一个类继承父类时,最多也只能继承一个父类,扩展性会受到一定的限制,为了弥补这一缺陷,Java又提供了一种新的引用数据类型分类,叫接口。
3 一个类只能继承一个父类,但可以实现多个接口。
4二、 接口的定义和使用:
5 1. 定义接口:使用interface关键字。
6 2. 实现接口:在一个抽象类或实现类中可以通过implements关键字。
7三、 接口的注意事项:
8 1. 接口是比抽象类更加抽象的“类”,接口中所有的方法都是抽象方法(不管是否使用abstract关键字修饰)。
9 2. 一个类若继承了一个抽象类或实现接口,该类有两种选择,要么将自己声明为抽象类(可以不用实现父类或接口中的抽象方法), 要么实现父类中或接口中的所有抽象方法。
10 3. 抽象类和接口都是不能被实例化的,即不能创建抽象类和接口的对象。
11 4. 接口当中的成员变量(属性、字段)必须是静态常量,且要使用public修饰,同时要赋值。
12 public static final String name = "";
13 5. 接口不能再去实现(implements)其他接口,但可以使用extends关键字去继承接口,且可以继承多个接口
14 6. 抽象类中可以写构造方法,但接口中不能编写构造方法
15
16四、 使用接口的好处:
17 1、 可以达到多“继承”的效果,针对Java是单继承的缺陷进行补充,让Java代码的扩展性更好。
18 2、 使用接口后可以达到设计(在接口中定义属性和方法)和实现(实现接口中的方法)分离,更利于团队协同开发; 设计可能是一个公司或组织在完成,而实现是其他更多的公司或组织来完成。
19 3、 JDBC、Java web都是先在接口中定义属性和方法,各个数据库厂商实现jdbc的接口、抽象类中定义的抽象方法; Java web的实现接口(如:tomcat)实现Java web接口、抽象类中定义的抽象方法。
20 4、 更自然的实现多态。 5、 调用者可以不用关心方法实现的细节,只需要知道调用方法时注意的问题即可 (a、是否需要传递参数,若需要是什么类型的参数;b、方法执行完是否有返回值,若有是什么类型的值;c、观察该方法是在哪个接口、抽象类、实现类定义的)
21
22五、 什么是多态?
23 一个父类型(接口、抽象类、实现类)的引用可以指向多个子类的对象(实例、引用),称为多态。
14
5public interface Usb{
6 public static final String name = "";
7
8 11
12 public void use();
13
14 1617
18 public void view(String name);
19
20 22
23 public void print();
24
25
26}
27
2832
33public class UsbMouse implements Usb {
34
35 @Override
36 public void use() {
37 System.out.println("USB Mouse的use()方法中输出的内容");
38 }
39
40 @Override
41 public void view(String name) {
42 System.out.println("USB Mouse的view()方法中输出的内容");
43 }
44
45 @Override
46 public void print() {
47 System.out.println("USB Mouse的print()方法中输出的内容");
48 }
49
50}
51
5254
55
56public class UsbFan implements Usb {
57
58 @Override
59 public void use() {
60 System.out.println("USB Fan的use()方法中输出的内容");
61
62 }
63
64 @Override
65 public void view(String name) {
66 System.out.println("USB Fan的view()方法中输出的内容");
67 }
68
69 @Override
70 public void print() {
71 System.out.println("USB Fan的print()方法中输出的内容");
72
73 }
74
75}
76
77public class UsbTest {
78 public static void main(String[] args) {
79 //一个父类型的引用可以指向多个子类的对象(实例、引用),称为多态。
80 Usb usb = new UsbMouse();
81 Usb usbfan = new UsbFan();
82 usb.use();
83 usbfan.use();
84 }
85}