From f399f480d839d8656dc76765315136b0c1ca1112 Mon Sep 17 00:00:00 2001 From: xiangflight Date: Wed, 10 Jul 2019 22:02:34 +0800 Subject: [PATCH] =?UTF-8?q?[feat=2010](=E6=88=AA=E8=87=B3=20=E6=8A=BD?= =?UTF-8?q?=E8=B1=A1=E7=B1=BB=20vs=20=E6=8E=A5=E5=8F=A3)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/book/10-Interfaces.md | 110 ++++++++++++++++++++++++++++++++++ docs/images/1562737974623.png | Bin 0 -> 31295 bytes 2 files changed, 110 insertions(+) create mode 100644 docs/images/1562737974623.png diff --git a/docs/book/10-Interfaces.md b/docs/book/10-Interfaces.md index d555928..539c056 100644 --- a/docs/book/10-Interfaces.md +++ b/docs/book/10-Interfaces.md @@ -646,13 +646,123 @@ Crack Twist ``` +这里展示了创建 **Operations** 的不同方式:一个外部类(Bing),一个匿名类,一个方法引用和 lambda 表达式——毫无疑问用在这里是最好的解决方法。 +这个特性是一项改善,因为它允许把静态方法放在更合适的地方。 + +### Instrument 作为接口 + +回顾下乐器的例子,使用接口的话: + +![类图](../images/1562737974623.png) + +类 **Woodwind** 和 **Brass** 说明一旦实现了某个接口,那么其实现就变成一个普通类,可以按常规方式扩展它。 + +接口的工作方式使得我们不需要显式声明其中的方法为 **public**,它们自动就是 **public** 的。`play()` 和 `adjust()` 使用 **default** 关键字定义实现。在 Java 8 之前,这些定义要在每个实现中重复实现,显得多余且令人烦恼: + +```java +// interfaces/music5/Music5.java +// {java interfaces.music5.Music5} +package interfaces.music5; +import polymorphism.music.Note; + +interface Instrument { + // Compile-time constant: + int VALUE = 5; // static & final + + default void play(Note n) // Automatically public + System.out.println(this + ".play() " + n); + } + + default void adjust() { + System.out.println("Adjusting " + this); + } +} + +class Wind implements Instrument { + @Override + public String toString() { + return "Wind"; + } +} + +class Percussion implements Instrument { + @Override + public String toString() { + return "Percussion"; + } +} + +class Stringed implements Instrument { + @Override + public String toString() { + return "Stringed"; + } +} + +class Brass extends Wind { + @Override + public String toString() { + return "Brass"; + } +} + +class Woodwind extends Wind { + @Override + public String toString() { + return "Woodwind"; + } +} + +public class Music5 { + // Doesn't care about type, so new types + // added to the system still work right: + static void tune(Instrument i) { + // ... + i.play(Note.MIDDLE_C); + } + + static void tuneAll(Instrument[] e) { + for (Instrument i: e) { + tune(i); + } + } + + public static void main(String[] args) { + // Upcasting during addition to the array: + Instrument[] orchestra = { + new Wind(), + new Percussion(), + new Stringed(), + new Brass(), + new Woodwind() + } + tuneAll(orchestra); + } +} +``` + +输出: + +``` +Wind.play() MIDDLE_C +Percussion.play() MIDDLE_C +Stringed.play() MIDDLE_C +Brass.play() MIDDLE_C +Woodwind.play() MIDDLE_C +``` + +这个版本的例子的另一个变化是:`what()` 被修改为 `toString()` 方法,因为 `toString()` 实现的正是 `what()` 方法要实现的逻辑。因为 `toString()` 是根基类 **Object** 的方法,所以它不需要出现在接口中。 + +注意到,无论是将其向上转型为称作 **Instrument** 的普通类,或称作 **Instrument** 的抽象类,还是叫作 **Instrument** 的接口,其行为都是相同的。事实上,从 `tune()` 方法上看不出来 **Instrument** 到底是一个普通类、抽象类,还是一个接口。 ## 抽象类和接口 + + ## 完全解耦 diff --git a/docs/images/1562737974623.png b/docs/images/1562737974623.png new file mode 100644 index 0000000000000000000000000000000000000000..3c80a7e2f3812fda46eda1d27e411947fb824880 GIT binary patch literal 31295 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