本节课程将学习以下内容:
- 什么是接口
- 接口的基本语法
- 为什么要使用接口
- 工厂方法模式
什么是接口
含义:
Java接口是一系列方法的声明,一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为(功能)。
接口的基本语法
- 使用interface定义;
- 接口当中的方法都是抽象方法(不用写abstract);
- 接口当中的方法都是public权限(不用写public);
- 实现接口使用implements关键字;
- 一个类可以实现多个接口;
- 一个接口可以继承多个接口;
注意:
- 不能生成对象;
- 用一个类来实现(关键字是implements)接口使用它;
- 复写接口中的抽象方法实现相应的功能。
例子1:(请动手)
1.新建一个名为USB.java的源文件:
1 2 3 4 5
| interface USB{ void read(); void write(); }
|
2.新建一个名为WIFI.java的源文件:
1 2 3 4 5
| interface WIFI{ void open(); void close(); }
|
3.新建一个名为USBPhone.java的源文件:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| class USBPhone implements USB,WIFI{ void read(){ System.out.println("USBPhone read!"); }
void write(){ System.out.println("USBPhone write!"); }
void open(){ System.out.println("WIFI open!"); }
void open(){ System.out.println("WIFI close!"); } }
|
4.新建一个名为Demo01.java的源文件:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| class Demo01{ public static void main(String[] args) {
USBPhone phone = new USBPhone();
USB usb = phone; WIFI wifi = phone;
usb.read(); usb.write();
wifi.open(); wifi.close(); } }
|
为什么要使用接口
工厂方法模式
- 请反复练习下面的例子2,在代码中深刻理解
为什么要使用接口
和工厂方法模式
。
例子2:(请动手)
1.新建一个名为Printer.java的源文件:
1 2 3 4 5
| interface Printer{ void open(); void close(); void print(String s); }
|
2.新建一个名为HPPrinter.java的源文件:
1 2 3 4 5 6 7 8 9 10 11
| class HPPrinter implements Printer{ void open(){ System.out.println("HP open"); } void close(){ System.out.println("HP close"); } void print(String s){ System.out.println("HP print-->" + s); } }
|
3.新建一个名为CanonPrinter.java的源文件:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| class CanonPrinter implements Printer{ private void clean(){ System.out.println("Canon clean"); } void open(){ System.out.println("Canon open"); } void close(){ System.out.println("Canon close"); } void print(String s){ System.out.println("Canon print-->" + s); } }
|
4.新建一个名为Demo02.java的源文件:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| class Demo02{ public static void main(String[] args) { Printer printer = null; int flag = 0; if (flag == 0) { printer = new HPPrinter(); } else if (flag == 1) { printer = new CanonPrinter(); }
printer.open(); printer.print("abcdefghijklmn"); printer.close();
} }
|
5.新建一个名为PrinterFactory.java的源文件:
1 2 3 4 5 6 7 8 9 10 11 12
| class PrinterFactory{ public static Printer getPrinter(int flag){ Printer printer = null; if (flag == 0) { printer = new HPPrinter(); } else if (flag == 1) { printer = new CanonPrinter(); } return printer; } }
|
6.新建一个名为Demo03.java的源文件:
1 2 3 4 5 6 7 8 9
| class Demo03{ public static void main(String[] args) { int flag = 0; Printer printer = PrinterFactory.getPrinter(flag); printer.open(); printer.print("abcdefghijklmn"); printer.close(); } }
|