Skip to content

Commit faad3a4

Browse files
committed
feat: update fundamental-oop
1 parent 4830ae0 commit faad3a4

File tree

1 file changed

+3
-22
lines changed

1 file changed

+3
-22
lines changed

docs/languages/java/fundamental-oop.md

Lines changed: 3 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -39,8 +39,6 @@
3939
- 你只需要关系如何`new`,而无需担心对象是何时或如何被`delete`
4040
- Java 拥有多种优秀的垃圾收集器GC实现。
4141

42-
43-
4442
## 基础OOP
4543

4644
???+ 关于package
@@ -142,11 +140,8 @@ this.brand = brand;
142140
```
143141

144142
- *class* 的成员方法可以访问类的域和方法而不需要`this`指定。
145-
146143
- 但是如果出现了变量或者形参名字冲突,则需要`this.`手动指定。
147144

148-
149-
150145
### Instance Initialization Block 实例初始化块
151146

152147
在类中直接使用`{}`扩起来的部分称为实例初始化块,它会在任何构造器运行之前运行。
@@ -243,10 +238,6 @@ myCar.introduce();
243238

244239
- 使用`.`调用对象的方法/接口。
245240

246-
247-
248-
---
249-
250241
## Reuse Classes
251242

252243
所有人都喜欢代码重用。
@@ -255,11 +246,8 @@ myCar.introduce();
255246
下面就来介绍面向对象中最基本的*重用类*方式:
256247

257248
- 组合 Composition。
258-
259249
- 继承 Inheritance。
260250

261-
262-
263251
### Composition 组合
264252

265253
- 组合指的是在新类中包含已有类的对象 *(的引用)*
@@ -273,14 +261,14 @@ public class Car {
273261
}
274262
```
275263

276-
组合描述了 *"has-a"* 关系。
264+
组合描述了 *"has-a"* 关系。
277265

278266
- 我们可以这种语义来建模更复杂、更贴合实际的汽车,如:
279267
- 一辆汽车 *有一个* 引擎。
280268
- 一辆汽车 *有四个* 轮子。
281269
- 那么*汽车*的最大速度,就可以通过重用*引擎*中的数据或方法来进行计算。
282270

283-
组合对象的初始化:
271+
组合对象的初始化:
284272

285273
- 前面提到,对象*引用*的默认值是 `null` ,对其进行任何访问都会引发空指针异常 `java.lang.NullPointerException`
286274

@@ -295,8 +283,6 @@ class Demo {
295283
}
296284
```
297285

298-
299-
300286
### Inheritance 继承
301287

302288
- *继承*是面向对象编程的重要特征之一。
@@ -327,6 +313,7 @@ public class Triangle extends Shape { ... }
327313
```
328314

329315
在这个例子中:
316+
330317
- 矩形`Rectangle` 圆形`Circle` 三角形`Triangle`*是一个* 几何图形 `Shape`
331318
- `Rectangle` `Circle` `Triangle`都包含了`Shape`提供的三个公开接口,即获取表面积 `area()` 绘制 `draw()` 判断点是否在图形内部 `inside(double, double)`
332319

@@ -445,8 +432,6 @@ class Child extends Parent {
445432
}
446433
```
447434

448-
449-
450435
**Inheritance: Upcasting & Polymorphism 向上转型&多态**
451436

452437
继承带来的重要性质是*向上转型 Upcasting**多态 Polymorphism*
@@ -457,8 +442,6 @@ class Child extends Parent {
457442
*Polymorphism* 指的是对父类函数的调用可能使用的子类的实现,会根据代码运行时,对象的实际类型进行动态分发。
458443
`shape.area(); // Invoking Circle#area()`
459444

460-
461-
462445
**Inheritance: Polymorphism in Depth**
463446

464447
- 数据抽象、继承与多态时面向对象程序设计语言的三大基本特征.
@@ -580,8 +563,6 @@ class Bus {
580563

581564
在 Java 中,可以通过组合+手动转发的方法实现 delegate。
582565

583-
584-
585566
### Abstract Class
586567

587568
某些类本身就是作为其他类的父类而存在。比如上面提到的 `Shape` 类,它提供的接口实际上都是没有意义的哑实现,必须要借助具体的子类才能起作用。在 Java 中可以使用*抽象类 Abstract Class *来表达。

0 commit comments

Comments
 (0)