Typescript--类的使用

类的定义

在ts中类的定义是通过class来定义的。

1
2
3
4
5
6
7
8
9
10
11
class Person {
name:string // 属性,省略了public字段
constructor (name:string) { // 构造函数,实例化类时,触发的方法
this.name = name
}
run ():void {
console.log(this.name)
}
}
var p = new Person('张三')
p.run() // 张三
ts中实现继承

在ts中实现继承的方式是通过extendssuper字符来实现的。父类和子类的方法一至。子类可以扩展自己的方法。如果子类和父类有同名方法的时候,调用子类方法,那么优先执行子类方法。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
class Person {
name: string
constructor (name: string) {
this.name = name
}
run ():string {
return this.name
}
}
class children extends Person {
constructor (name: string) {
super(name) // 初始化父类的构造函数
}
}
类中的修饰符

在ts的类中定义属性的时候提供了三种修饰符。
public 公有属性,在类,子类,以及类外都可以被访问
protected 保护属性,在类,子类,中可以被访问,在类之外不能被访问
private 私有属性,在类中可以被访问,在子类,以及类外是不能被访问的

如果属性不加任何修饰符,那么默认是public,表示公有属性。

静态方法和静态属性

ts中静态方法和属性通过static字符来定义,并且通过类名来调用。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
class Person {
static name:string = '小明' // 这是定义的静态属性
constructor(name:string) {
this.name = name
}
// 静态方法
static getName ():string {
return this.name
}
// 实例方法
run ():string {
return this.name
}
}
// 调用静态方法
Person.getName() // 小明
// 调用实例方法,必须先创建实例,通过实例来调用
let p = new Person('小刚')
p.run() // 小刚
继承多态

父类定义一个方法不去实现,让子类来实现,并且在子类中可以有不同的表现形式。多态也是继承的一种表现。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
class Person {
public name:string
constructor(name:string) {
this.name = name
}
eat ():void {
console.log(`${this.name}爱吃肉!`)
}
}

class Girl extends Person {
constructor(name:string){
super(name)
}
eat ():void {
// do something
}
}

class Boy extends Person {
constructor(name:string){
super(name)
}
eat ():void {
// do something
}
}
抽象类和抽象方法

ts中的抽象类是提供其他类继承的基类,不能直接实例化。用abstract关键字来实现抽象类和抽象方法。抽象类中的抽象方法不包含具体的实现并且必须在派生类中实现。abstruct字段只能放到抽象类中。要求子类中必须包含抽象类中的方法。

1
2
3
4
5
6
7
8
9
10
11
12
abstruct class Person {
abstruct eat():any
}
// let p = new Person() 错误写法
class Children extends Person {
constructor(name:string) {
super(name)
}
eat():any {
// do something
}
}
  • 版权声明: 本博客所有文章除特别声明外,著作权归作者所有。转载请注明出处!
  • Copyrights © 2015-2022 Lee
  • 访问人数: | 浏览次数:

请我喝杯咖啡吧~

支付宝
微信