TypeSctipt中类与继承的方法与ES6中基本一致,写法如下:
1. 定义类
class Person{
name:String;
constructor(name:String){
this.name = name;
}
getName():String{
return this.name;
}
setName(name:String):void{
this.name = name;
}
};
var p = new Person('张三');
console.log(p.getName());
// 张三
p.setName('李四');
console.log(p.getName());
// 李四
2. 继承类
class Me extends Person{
constructor(name:String){
// 调用父类型的构造器
super(name);
}
// 子类方法与父类方法同名时,会覆盖父类的方法
getName():String{
return '我是'+this.name;
}
}
var man = new Me('王五');
console.log(man.getName());
// 我是王五
3. TypeScript里关于类的修饰符,与C++一样,主要有以下几种:
(1). public 公有。在类里面、子类里面、类外面都可以访问。属性如果不加修饰符,默认就是公有。
class Person{
public name:String;
constructor(name:String){
this.name = name;
}
getName():String{
return this.name;
}
setName(name:String):void{
this.name = name;
}
};
var firstMan = new Person('张三');
// name 在类外面可以访问
console.log(firstMan.name);
// 张三
// name 在类里面可以访问
console.log(firstMan.getName());
// 张三
class Boy extends Person{
constructor(name:String){
super(name);
}
getName():String{
return this.name;
}
};
var thirdMan = new Boy('李四');
// name 在子类里可以访问
console.log(thirdMan.getName());
// 李四
(2).protected 保护类型。在类里面、子类里面可以访问,在类外面没法访问。
class Person{
protected name:String;
constructor(name:String){
this.name = name;
}
getName():String{
return this.name;
}
setName(name:String):void{
this.name = name;
}
};
var firstMan = new Person('张三');
// name 在类外面不可以访问
console.log(firstMan.name);
// 报错
// name 在类里面可以访问
console.log(firstMan.getName());
// 张三
class Boy extends Person{
constructor(name:String){
super(name);
}
getName():String{
return this.name;
}
};
var thirdMan = new Boy('李四');
// name 在子类里可以访问
console.log(thirdMan.getName());
// 李四
(3). private 私有。 在类里面可以访问,在子类和外面没法访问。
class Person{
private name:String;
constructor(name:String){
this.name = name;
}
getName():String{
return this.name;
}
setName(name:String):void{
this.name = name;
}
};
var firstMan = new Person('张三');
// name 在类外面不可以访问
console.log(firstMan.name);
// 报错
// name 在类里面可以访问
console.log(firstMan.getName());
// 张三
class Boy extends Person{
constructor(name:String){
super(name);
}
getName():String{
return this.name;
}
};
var thirdMan = new Boy('李四');
// name 在子类里不可以访问
console.log(thirdMan.getName());
// 报错