Ts 类
Ts 类
Ts的类
-
仅能继承唯一父类
-
可实现多个接口
-
具有抽象类
-
类可以被接口继承
-
属性默认访问权限
public
修饰符
访问权限 | 类中 | 子类 | 外部程序 |
---|---|---|---|
public | ✔️ | ✔️ | ✔️ |
protected | ✔️ | ✔️ | ❌ |
private | ✔️ | ❌ | ❌ |
readonly只读修饰符
它修饰的类的属性经过初始化赋值后,永远无法改写其属性值,只能访问。
构造器
与Java不同,Ts的构造器不能重载,它是唯一的。
class Person{
public name:string
constructor(name:string){
this.name = name
}
}
参数属性
我的理解上——这应该是Ts的语法糖,帮助开发者减少代码量
类属性可不写,而在构造器constructor中的参数前加上修饰符,如public,private,protected,readonly等。如此Ts即会判断是使用了参数属性。如下代码👇
class Person{
constructor(public name:string){}//构造函数不用写具体实现
}
let jack = new Person('jack')
console.log(jack.name) // name属性并未在Person中申明,仅仅是在构造器参数name前加了一个public,竟然神奇地让Person具备了name属性
存取器
和Java的get/set具有一样的意义,Ts的语法稍微出入些。
class Person {
private name:string = ''
// get 函数返回值必须与对象一样
get Name():string{
return this.name
}
// set 不能加返回值,比如Name(name:string):void,这样会报错
set Name(name:string) {
if(name){
this.name = name
}
}
}
let jack = new Person()
jack.Name = 'jack' //调用set
console.log(jack.Name)//调用get
静态属性
静态属性由static
修饰,静态属性不能被类实体访问,只能由类访问!静态属性被所有类实体中的方法共享
Ts抽象类
不写程序了!仅列举一些注意事项
- 抽象类中才可定义抽象方法
- 抽象类不能被实例化
- 抽象类可包含具体实现的方法和属性,但抽象方法不能实现
- 类中属性无法抽象(属性不能被abstract修饰)
接口继承类
-
接口继承类中的属性和方法
class Person { name:string age:number say():void{ console.log(`${this.name}今年${this.age}岁了`) } } interface PersonAction extends Person{ action():void } class Student implements PersonAction{ age: number; name: string; //实现接口中方法 action(): void { } // 重写say方法 say(): void { } }
本文来自博客园,作者:勤匠,转载请注明原文链接:https://www.cnblogs.com/JarryShu/p/16988438.html