GitOPEN's Home.

《Monkey Java》课程6.4之接口的基本语法与应用(重要)

Word count: 782 / Reading time: 3 min
2015/07/18 Share

转发请注明出处:
安卓猴的博客(http://sunjiajia.com)


本节课程将学习以下内容:

  • 什么是接口
  • 接口的基本语法
  • 为什么要使用接口
  • 工厂方法模式

什么是接口

含义:

Java接口是一系列方法的声明,一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为(功能)。

接口的基本语法

  • 使用interface定义;
  • 接口当中的方法都是抽象方法(不用写abstract);
  • 接口当中的方法都是public权限(不用写public);
  • 实现接口使用implements关键字;
  • 一个类可以实现多个接口;
  • 一个接口可以继承多个接口;

注意:

  • 不能生成对象;
  • 用一个类来实现(关键字是implements)接口使用它;
  • 复写接口中的抽象方法实现相应的功能。

例子1:(请动手)

1.新建一个名为USB.java的源文件:

1
2
3
4
5
interface USB{
// 它们是public权限的抽象函数
void read();
void write();
}

2.新建一个名为WIFI.java的源文件:

1
2
3
4
5
interface WIFI{
// 它们是public权限的抽象函数
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;
// 用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的源文件:

1
2
3
4
5
6
7
8
9
10
11
12
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的源文件:

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();
}
}
  • 请注意4、5、6不同写法的意义。

关于我

  • 微信公众号:Android奇想录(android_amazing)

扫描二维码关注公众号


欣慰帮到你 一杯热咖啡
【奋斗的Coder!】企鹅群
【奋斗的Coder】公众号
CATALOG
  1. 1. 什么是接口
  2. 2. 接口的基本语法
  3. 3. 例子1:(请动手)
  4. 4. 为什么要使用接口
  5. 5. 工厂方法模式
  6. 6. 例子2:(请动手)
    1. 6.1. 关于我