From b6f1da0b389055bf38a1c06d4b6eaefc70e068b9 Mon Sep 17 00:00:00 2001 From: xiangflight Date: Thu, 4 Jul 2019 23:32:37 +0800 Subject: [PATCH] =?UTF-8?q?[feat=2009](=E6=88=AA=E8=87=B3=20=E9=99=B7?= =?UTF-8?q?=E9=98=B1=EF=BC=9A=E8=A6=86=E7=9B=96=E7=A7=81=E6=9C=89=E6=96=B9?= =?UTF-8?q?=E6=B3=95)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/book/09-Polymorphism.md | 293 ++++++++++++++++++++++++++++++++++ docs/images/1562204648023.png | Bin 0 -> 17350 bytes docs/images/1562252767216.png | Bin 0 -> 25939 bytes 3 files changed, 293 insertions(+) create mode 100644 docs/images/1562204648023.png create mode 100644 docs/images/1562252767216.png diff --git a/docs/book/09-Polymorphism.md b/docs/book/09-Polymorphism.md index e7a5818..de6a102 100644 --- a/docs/book/09-Polymorphism.md +++ b/docs/book/09-Polymorphism.md @@ -178,6 +178,299 @@ Java 中除了 **static** 和 **final** 方法(**private** 方法也是隐式 ### 产生正确的行为 +一旦当你知道 Java 中所有方法都是通过后期绑定来实现多态时,就可以编写只与基类打交道的代码,而且代码对于派生类来说都能正常地工作。或者换种说法,你向对象发送一条消息,让对象自己做正确的事。 + +面向对象编程中的经典例子是形状 **Shape**。这个例子很直观,但不幸的是,它可能让初学者困惑,认为面向对象编程只适合图形化程序设计,实际上不是这样。 + +形状的例子中,有一个基类称为 **Shape** ,多个不同的派生类型分别是:**Circle**,**Square**,**Triangle** 等等。这个例子之所以好用,是因为我们可以直接说“圆(Circle)是一种形状(Shape)”,这很容易理解。继承图展示了它们之间的关系: + +![形状继承图](../images/1562204648023.png) + +向上转型就像下面这么简单: + +```java +Shape s = new Circle(); +``` + +这会创建一个 **Circle** 对象,引用被赋值给 **Shape** 类型的变量 s,这看似错误(将一种类型赋值给另一种类型),然而是没问题的,因此从继承上可认为圆(Circle)就是一个形状(Shape)。因此编译器认可了赋值语句,没有报错。 + +假设你调用了一个基类方法(在派生类中都被覆写): + +```java +s.draw() +``` + +你可能再次认为 **Shape** 的 `draw()` 方法被调用,因为 s 是一个 **Shape** 引用——编译器怎么可能知道要做其他的事呢?然而,由于后期绑定(多态)被调用的是 **Circle** 的 `draw()` 方法,这是正确的。 + +下面的例子稍微有些不同。首先让我们创建一个可复用的 **Shape** 类库,基类 **Shape** 中建立了所有继承自 **Shape** 的类的共同接口——所有的形状都可以被绘画和擦除: + +```java +// polymorphism/shape/Shape.java +package polymorphism.shape; + +public class Shape { + public void draw() {} + public void erase() {} +} +``` + +派生类通过覆写这些方法为每个具体的形状提供独一无二的方法行为: + +```java +// polymorphism/shape/Circle.java +package polymorphism.shape; + +public class Circle extends Shape { + @Override + public void draw() { + System.out.println("Circle.draw()"); + } + @Override + public void erase() { + System.out.println("Circle.erase()"); + } +} + +// polymorphism/shape/Square.java +package polymorphism.shape; + +public class Square extends Shape { + @Override + public void draw() { + System.out.println("Square.draw()"); + } + @Override + public void erase() { + System.out.println("Square.erase()"); + } + } + +// polymorphism/shape/Triangle.java +package polymorphism.shape; + +public class Triangle extends Shape { + @Override + public void draw() { + System.out.println("Triangle.draw()"); + } + @Override + public void erase() { + System.out.println("Triangle.erase()"); + } +} +``` + +**RandomShapes** 是一种工厂,每当我们调用 `get()` 方法时,就会产生一个指向随机创建的 **Shape** 对象的引用。注意,向上转型发生在 **return** 语句中,每条 **return** 语句取得一个指向某个 **Circle**,**Square** 或 **Triangle** 的引用, 并将其以 **Shape** 类型从 `get()` 方法发送出去。因此无论何时调用 `get()` 方法,你都无法知道具体的类型是什么,因为你总是得到一个简单的 **Shape** 引用: + +```java +// polymorphism/shape/RandomShapes.java +// A "factory" that randomly creates shapes +package polymorphism.shape; +import java.util.*; + +public class RandomShapes { + private Random rand = new Random(47); + + public Shape get() { + switch(rand.nextInt(3)) { + default: + case 0: return new Circle(); + case 1: return new Square(); + case 2: return new Triangle(); + } + } + + public Shape[] array(int sz) { + Shape[] shapes = new Shape[sz]; + // Fill up the array with shapes: + for (int i = 0; i < shapes.length; i++) { + shapes[i] = get(); + } + return shapes; + } +} +``` + +`array()` 方法分配并填充了 **Shape** 数组,这里使用了 for-in 表达式: + +```java +// polymorphism/Shapes.java +// Polymorphism in Java +import polymorphism.shape.*; + +public class Shapes { + public static void main(String[] args) { + RandomShapes gen = new RandomShapes(); + // Make polymorphic method calls: + for (Shape shape: gen.array(9)) { + shape.draw(); + } + } +} +``` + +输出: + +``` +Triangle.draw() +Triangle.draw() +Square.draw() +Triangle.draw() +Square.draw() +Triangle.draw() +Square.draw() +Triangle.draw() +Circle.draw() +``` + +`main()` 方法中包含了一个 **Shape** 引用组成的数组,其中每个元素通过调用 **RandomShapes** 类的 `get()` 方法生成。现在你只知道拥有一些形状,但除此之外一无所知(编译器也是如此)。然而当遍历这个数组为每个元素调用 `draw()` 方法时,从运行程序的结果中可以看到,与类型有关的特定行为奇迹般地发生了。 + +随机生成形状是为了让大家理解:在编译时,编译器不需要知道任何具体信息以进行正确的调用。所有对方法 `draw()` 的调用都是通过动态绑定进行的。 + +### 可扩展性 + +现在让我们回头看音乐乐器的例子。由于多态机制,你可以向系统中添加任意多的新类型,而不需要修改 `tune()` 方法。在一个设计良好的面向对象程序中,许多方法将会遵循 `tune()` 的模型,只与基类接口通信。这样的程序时可扩展的,因为可以从通用的基类派生出新的数据类型,从而添加新的功能。那些操纵基类接口的方法不需要改动就可以应用于新类。 + +考虑一下乐器的例子,如果在基类中添加更多的方法,并加入一些新类,将会发生什么呢: + +![乐器继承图](../images/1562252767216.png) + +所有的新类都可以和原有类正常运行,不需要改动 `tune()` 方法。即使 `tune()` 方法单独存放在某个文件中,而且向 **Instrument** 接口中添加了新的方法,`tune()` 方法也无需再编译就能正确运行。下面是类图的实现: + +```java +// polymorphism/music3/Music3.java +// An extensible program +// {java polymorphism.music3.Music3} +package polymorphism.music3; +import polymorphism.music.Note; + +class Instrument { + void play(Note n) { + System.out.println("Instrument.play() " + n); + } + + String what() { + return "Instrument"; + } + + void adjust() { + System.out.println("Adjusting Instrument"); + } +} + +class Wind extends Instrument { + @Override + void play(Note n) { + System.out.println("Wind.play() " + n); + } + @Override + String what() { + return "Wind"; + } + @Override + void adjust() { + System.out.println("Adjusting Wind"); + } +} + +class Percussion extends Instrument { + @Override + void play(Note n) { + System.out.println("Percussion.play() " + n); + } + @Override + String what() { + return "Percussion"; + } + @Override + void adjust() { + System.out.println("Adjusting Percussion"); + } +} + +class Stringed extends Instrument { + @Override + void play(Note n) { + System.out.println("Stringed.play() " + n); + } + @Override + String what() { + return "Stringed"; + } + @Override + void adjust() { + System.out.println("Adjusting Stringed"); + } +} + +class Brass extends Wind { + @Override + void play(Note n) { + System.out.println("Brass.play() " + n); + } + @Override + void adjust() { + System.out.println("Adjusting Brass"); + } +} + +class Woodwind extends Wind { + @Override + void play(Note n) { + System.out.println("Woodwind.play() " + n); + } + @Override + String what() { + return "Woodwind"; + } +} + +public class Music3 { + // Doesn't care about type, so new types + // added to the system still work right: + public static void tune(Instrument i) { + // ... + i.play(Note.MIDDLE_C); + } + + public 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()` 返回一个带有类描述的 **String** 引用,`adjust()` 提供一些乐器调音的方法。 + +在 `main()` 方法中,当向 **orchestra** 数组添加元素时,元素会自动向上转型为 **Instrument**。 + +`tune()` 方法可以忽略周围所有代码发生的变化,仍然可以正常运行。这正是我们期待多态能提供的特性。代码中的修改不会破坏程序中其他不应受到影响的部分。换句话说,多态是一项“将改变的事物与不变的事物分离”的重要技术。 + +### 陷阱:”覆写“私有方法 + diff --git a/docs/images/1562204648023.png b/docs/images/1562204648023.png new file mode 100644 index 0000000000000000000000000000000000000000..6f5041c7911131683cb6edb64ece6780de1ea529 GIT binary patch literal 17350 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 Ba83XK literal 0 HcmV?d00001 diff --git a/docs/images/1562252767216.png b/docs/images/1562252767216.png new file mode 100644 index 0000000000000000000000000000000000000000..f9312610adf3fc34d08c929f79608042068c121a GIT binary patch literal 25939 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 z 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 bEH?TT;b*z!58B|rq@c`pTN)P|I!FHpVF#SR literal 0 HcmV?d00001