@@ -13,11 +13,11 @@ TypeScript 除了实现了所有 ES6 中的类的功能以外,还添加了一
13
13
- 类(Class):定义了一件事物的抽象特点,包含它的属性和方法
14
14
- 对象(Object):类的实例,通过 ` new ` 生成
15
15
- 面向对象(OOP)的三大特性:封装、继承、多态
16
- - 封装(Encapsulation):将对数据的操作细节隐藏起来,只暴露对外的接口。外界调用端不需要(也不可能)知道细节,就能通过对外提供的接口来访问该对象,同时也保证了外界无法任意更改对象内部的数据。比如一个账单对象,拥有打印账单方法,外界可以直接调用这个方法即可打印账单,同时外界无法直接更改账单内容
17
- - 继承(Inheritance):子类继承父类,即子类除了拥有父类的所有特性外 ,还有一些更具体的特性
18
- - 多态(Polymorphism):由继承而产生了相关的不同的类,对同一个方法可以有不同的响应。比如 ` Cat ` 和 ` Dog ` 都继承自 ` Animal ` ,但是分别实现了自己的 ` eat ` 方法,此时针对一个对象实例, 我们无需了解它是 ` Cat ` 还是 ` Dog ` ,直接调用 ` eat ` 方法也是可以的,程序会自动判断出来应该执行哪个 ` eat `
19
- - 存取器(getter & setter):用以改变属性的赋值和读取行为
20
- - 修饰符(Modifiers):修饰符是一些关键字,用于限定成员或类型的性质。比如 ` public ` 表示是公有属性或方法
16
+ - 封装(Encapsulation):将对数据的操作细节隐藏起来,只暴露对外的接口。外界调用端不需要(也不可能)知道细节,就能通过对外提供的接口来访问该对象,同时也保证了外界无法任意更改对象内部的数据
17
+ - 继承(Inheritance):子类继承父类,子类除了拥有父类的所有特性外 ,还有一些更具体的特性
18
+ - 多态(Polymorphism):由继承而产生了相关的不同的类,对同一个方法可以有不同的响应。比如 ` Cat ` 和 ` Dog ` 都继承自 ` Animal ` ,但是分别实现了自己的 ` eat ` 方法。此时针对某一个实例, 我们无需了解它是 ` Cat ` 还是 ` Dog ` ,就可以直接调用 ` eat ` 方法,程序会自动判断出来应该如何执行 ` eat `
19
+ - 存取器(getter & setter):用以改变属性的读取和赋值行为
20
+ - 修饰符(Modifiers):修饰符是一些关键字,用于限定成员或类型的性质。比如 ` public ` 表示公有属性或方法
21
21
- 抽象类(Abstract Class):抽象类是供其他类继承的基类,抽象类不允许被实例化。抽象类中的抽象方法必须在子类中被实现
22
22
- 接口(Interfaces):不同类之间公有的属性或方法,可以抽象成一个接口。接口可以被类实现(implements)。一个类只能继承自另一个类,但是可以实现多个接口
23
23
@@ -27,7 +27,9 @@ TypeScript 除了实现了所有 ES6 中的类的功能以外,还添加了一
27
27
28
28
### 属性和方法
29
29
30
- 使用 ` class ` 定义类,使用 ` constructor ` 定义构造函数,通过 ` new ` 生成新实例的时候,会自动调用构造函数。
30
+ 使用 ` class ` 定义类,使用 ` constructor ` 定义构造函数。
31
+
32
+ 通过 ` new ` 生成新实例的时候,会自动调用构造函数。
31
33
32
34
``` js
33
35
class Point {
@@ -118,11 +120,12 @@ class MyClass {
118
120
myProp = 42 ;
119
121
120
122
constructor () {
121
- console . log ( this . myProp );
123
+ // ...
122
124
}
123
125
}
124
126
125
- let a = new MyClass (); // 42
127
+ let a = new MyClass ();
128
+ console .log (a .myProp ); // 42
126
129
```
127
130
128
131
### 静态属性
@@ -147,11 +150,9 @@ console.log(MyClass.myProp); // 42
147
150
148
151
TypeScript 可以使用三种访问修饰符(Access Modifiers),分别是 ` public ` 、` private ` 和 ` protected ` 。
149
152
150
- ` public ` 修饰的属性或方法是公有的,可以在任何地方被访问到,默认所有的属性和方法都是 ` public ` 的。
151
-
152
- ` private ` 修饰的属性或方法是私有的,不能在声明它的类的外部访问。
153
-
154
- ` protected ` 修饰的属性或方法是受保护的,它和 ` private ` 类似,区别是她在子类中也是允许被访问的。
153
+ - ` public ` 修饰的属性或方法是公有的,可以在任何地方被访问到,默认所有的属性和方法都是 ` public ` 的
154
+ - ` private ` 修饰的属性或方法是私有的,不能在声明它的类的外部访问
155
+ - ` protected ` 修饰的属性或方法是受保护的,它和 ` private ` 类似,区别是它在子类中也是允许被访问的
155
156
156
157
下面举一些例子:
157
158
@@ -237,7 +238,7 @@ class Cat extends Animal {
237
238
238
239
### 抽象类
239
240
240
- ` abstract ` 用于定义抽象类和抽象类中的抽象方法 。
241
+ ` abstract ` 用于定义抽象类和其中的抽象方法 。
241
242
242
243
``` ts
243
244
abstract class Animal {
@@ -295,7 +296,7 @@ let cat = new Cat('Tom');
295
296
296
297
上面的例子中,我们实现了抽象方法 ` move ` ,编译通过了。
297
298
298
- 需要注意的是,即使是抽象方法,TypeScript 的编译结果中,任然会存在这个类 ,上面的代码的编译结果是:
299
+ 需要注意的是,即使是抽象方法,TypeScript 的编译结果中,仍然会存在这个类 ,上面的代码的编译结果是:
299
300
300
301
``` js
301
302
var __extends = (this && this .__extends ) || function (d , b ) {
@@ -324,7 +325,7 @@ var cat = new Cat('Tom');
324
325
325
326
### 实现接口
326
327
327
- 接口在 TypeScript 中是一个非常灵活的概念,实际上,我们在[ 对象的类型——接口] ( /from-javascript-to-typescript /basics/type-of-object-interfaces.html) 一章中,已经接触了接口的一种用法了。这里是接口的第二种用法。想了解接口的所有用法,可以参考???。
328
+ 接口在 TypeScript 中是一个非常灵活的概念,实际上,我们在[ 对象的类型——接口] ( .. /basics/type-of-object-interfaces.html) 一章中,已经接触了接口的一种用法了。这里是接口的第二种用法。想了解接口的所有用法,可以参考???。
328
329
329
330
实现(implements)是面向对象中的一个重要概念。一般来讲,一个类只能继承自另一个类,有时候不同类之间可以有一些共有的特性,这时候就可以把特性提取成接口(interfaces),用 ` implements ` 关键字来实现。这个特性大大提高了面向对象的灵活性。
330
331
0 commit comments