类的概念
- 类(Class):定义了一件事物的抽象特点,包含它的属性和方法;
- 对象(Object):类的实例,通过new生成
-
面对对象(OOP)的三大特点:封装,继承,多态
- 封装(Encapsulation):将对数据的操作细节隐藏起来,只暴露对外的接口。外界调用时不需要(也不可能)知道细节,就能通过对外提供的接口来访问该对象,同时也保证了外界无法随意更改对象内部的数据。
-
继承(Inheritance):子类继承父类,子类除了拥有父类的所有特性外,还有一些更具体的特性
- 子类又叫派生类
- 父类又叫基类,超类
- 多态(Polymorphism):由继承产生了相关的不同的类,对同一个方法可以有不同的响应
- 存取器(getter&setter):用以改变属性的读取和赋值行为
- 修饰符(Modifiers):修饰符是一些关键字,用于限定成员或类型的性质。
-
抽象类(Abstract Class):抽象类是供其他类继承的基类,抽象类不允许被实例化。
- 抽象类中的抽象方法不能被自己实现
- 抽象类中的抽象方法必须在子类中实现
- 接口(Interfaces):不同类之间共有的属性或方法可以抽象为一个接口。接口可以被多个类实现(implements)。一个类只能继承父类,但是可以实现多个接口。
类的用法
- constructor定义构造器;
- 支持 get 和 set 关键字,改变属性的赋值和读取行为;
class Animal {
constructor(name) {
this.name = name;
}
get name() {
return 'Jack';
}
set name(value) {
console.log('setter: ' + value);
}
}
let a = new Animal('Kitty'); // setter: Kitty
a.name = 'Tom'; // setter: Tom
console.log(a.name); // Jack
-
extend表明继承,子类中用super关键字调用父类的构造函数和方法;
- 子类必须在构造器的一开始就使用super(params)来调用父类的构造器
-
修饰符
-
public修饰符宝石该属性(方法)为公共方法,可以在任何地方被访问和修改
* 成员(属性/方法)默认为public
- static 修饰符修饰的方法(属性)为静态方法(属性),不需要实例化直接通过类调用;
-
private修饰符表示该属性(方法)是私有的,不允许在声明它的类外(子类也不允许)访问和修改
* 修饰构造器时,类不允许被继承或实例化;
-
protected 修饰符表示该属性(方法)被保护,对子类来说只可以访问,不可以修改;
* protected修饰构造器时,类只允许继承,不允许实例化;
-
-
readonly只读属性关键字,只允许出现在属性声明或索引签名或构造函数中;
- readonly与其他修饰符共存时,要写在后面;
- 修饰符使用在构造函数参数中,等同于类中定义该属性,同时给该属性赋值;
- abstract 用来定义抽象类和其抽象方法;
- 定义类的时候会同时生成类型和构造函数,所以类名可以当作接口来用,也用new实例化对象
class Animal {
name: string;
constructor(name: string) {
this.name = name;
}
sayHi(): string {
return \`My name is ${this.name}\`;
}
}
let a: Animal = new Animal('Jack');
console.log(a.sayHi()); // My name is Jack
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。