转发请注明出处:
安卓猴的博客(http://sunjiajia.com)
本节课程将学习以下内容:
- 什么是接口
- 接口的基本语法
- 为什么要使用接口
- 工厂方法模式
什么是接口
含义:
Java接口是一系列方法的声明,一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为(功能)。
接口的基本语法
- 使用interface定义;
- 接口当中的方法都是抽象方法(不用写abstract);
- 接口当中的方法都是public权限(不用写public);
- 实现接口使用implements关键字;
- 一个类可以实现多个接口;
- 一个接口可以继承多个接口;
注意:
- 不能生成对象;
- 用一个类来实现(关键字是implements)接口使用它;
- 复写接口中的抽象方法实现相应的功能。
例子1:(请动手)
1.新建一个名为USB.java的源文件:
interface USB{
// 它们是public权限的抽象函数
void read();
void write();
}
2.新建一个名为WIFI.java的源文件:
interface WIFI{
// 它们是public权限的抽象函数
void open();
void close();
}
3.新建一个名为USBPhone.java的源文件:
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的源文件:
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的源文件:
interface Printer{
void open();
void close();
void print(String s);
}
2.新建一个名为HPPrinter.java的源文件:
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的源文件:
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的源文件:
class Demo02{
public static void main(String[] args) {
Printer printer = null;
// 用flag来模拟用户选择打印机。
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的源文件:
class PrinterFactory{
public static Printer getPrinter(int flag){
Printer printer = null;
// 用flag来模拟用户选择打印机。
if (flag == 0) {
printer = new HPPrinter();
} else if (flag == 1) {
printer = new CanonPrinter();
}
return printer;
}
}
6.新建一个名为Demo03.java的源文件:
class Demo03{
public static void main(String[] args) {
int flag = 0;
Printer printer = PrinterFactory.getPrinter(flag);
printer.open();
printer.print("abcdefghijklmn");
printer.close();
}
}
- 请注意4、5、6不同写法的意义。