使用 TypeScript可以定义类实现OOP的编程思想,并且其语法和Java几乎一模一样。对于学过Java语言的后端程序员来说,这部分内容可以直接略过。
我们通过一个实例,快速掌握Typescript的类定义方式和语法特征。
//定义学生类
class Students {
static school: string = '清华大学'; //静态属性
public score: number; //公有属性
private money: number; //private: 只能类内部可以访问
private _sid: string;
private _sname: string;
private _gender: string; //私有属性,但是定义了访问器,外部可以访问。
//构造方法
constructor(sid: string, sname: string, gender: string,money:number) {
this._sid = sid;
this._sname = sname;
this._gender = gender;
this.money = money;
}
//sid属性存取器
set sid(value: string) {
this._sid = value;
}
get sid(): string {
return this._sid;
}
//sname属性存取器
get sname(): string {
return this._sname;
}
set sname(value: string) {
this._sname = value;
}
//gender属性存取器
get gender(): string {
return this._gender;
}
set gender(value: string) {
this._gender = value;
}
//成员方法
study(): void {
console.log(this.sname + " is good good study,day day up!");
}
//自我介绍
introduce():void{
console.log("my name is:"+this.sname+",I have money:"+this.money);
}
}
let s = new Students('S0001', 'zhangsan', 'male',10000);
console.log(s);
console.log(s.sname);
s.score = 98;
s.sname = 'lisi'; //ok
//s.money = 5000; error
console.log(s);
console.log(Students.school);
s.study();
s.introduce();
使用abstract定义抽象类。抽象类做为其它派生类的基类使用。 它们不能被实例化。不同于接口,抽象类可以包含成员的实现细节。 abstract 关键字是用于定义抽象类和在抽象类内部定义抽象方法。
实例:
export {}
abstract class Animal{
protected high:number;
protected weight:number;
abstract bark():void;
constructor(high:number,weight:number) {
this.high = high;
this.weight = weight;
}
}
class Dog extends Animal{
private _alias; //昵称;
constructor(hight:number,weight:number,alias:string) {
super(hight,weight);
this._alias = alias;
}
get alias() {
return this._alias;
}
set alias(value) {
this._alias = value;
}
bark(): void {
console.log(this.alias+' is 汪汪...');
}
}
let dog = new Dog(20,40,'旺财');
dog.bark();