# 1. 定义一个类
// 定义
class Person{
name:string; // 属性 前面省略的 public 关键词
constructor(name:string){ //构造函数 实例化类的时候触发的方法
this.name = name
}
getName():string{
return this.name ;
}
setName(name:string):void{
this.name = name;
}
}
let p = new Person('张三'); // 实例化
// 调用方法
p.getName(); // 张三
p.setName('李四'); //设置名称
p.getName(); // 李四
# 2. 类的继承
class Person{
name: string;
constructor(name:string){
this.name = name;
}
run():string{
return this.name + '在运动';
}
}
class Web extents Person{
constructor(name:string){
super(name);
}
}
let w = new Web('张三');
console.log( w.run() ); // 张三在运动
# 3. 类里的修饰符
public :公有
在里面、子类和类外面都可以访问
protected : 保护类型
在类里面和子类都可以访问,类外部不可访问
private : 私有的
在类里可以访问,子类和类外面不可访问
属性不加修饰符默认就是 公有(public)
class Person{
name: string; // 默认public
protected age: number;
private genter: string;
constructor(name:string, age:number, genter:string){
this.name = name;
this.age = age;
this.genter = genter;
}
run():string{
return this.name + '在运动';
}
}
class Web extents Person{
constructor(name:string, age:number, genter:string){
super(name);
super(age);
super(genter);
}
run():string{
return this.name + this.age + '岁了'; //没问题
// 报错 提示 genter 为私有类型不可访问
// return this.name + '是'+ this.genter +'生';
}
}
let w = new Web('张三', 18, '男');
console.log( w.name ); // 张三 可访问 属性为 public
console.log( w.age ); // 报错 不可访问 属性为 protected
# 4. 类里的静态方法
class Person{
name: string; // 默认public
static age: number; // 静态属性
constructor(name:string){
this.name = name;
}
// 动态方法
run():string{
return this.name + '在运动';
}
// work
work():string{
return this.name +'在工作'; // 报错 静态方法里只能访问静态属性
return '我' + Person.age +'岁了';//正确 静态方法可以访问静态属性
}
}
# 4. 抽象类和抽象方法
- 抽象类是提供其他类继承的基类,不能直接实例化;
- 用abstract关键字定义抽象类和抽象方法,
抽象类中的方法不包含具体实现并且必须在派生类中实现; - abstract 抽象方法只能放在抽象类里面;
- 抽象类和方法用来定义标准;
abstract class Person{
name: string;
constructor(name:string){
this.name = name;
}
// 抽象方法
abstract work():any;
// 动态方法
run():string{
return this.name + '在运动';
}
}
// let p = new Person('张三'); // 报错 抽象方法不能实例化
class Web extends Person{
constructor(name:string){
super(name)
}
// 如不实现抽象方法 work 则报错
// 提示 抽象类的子类必须实现抽象类的抽象方法
work():any{
return this.name + '在工作';
}
}
let w = new Web('张三');
console.log( w.work() ); // 张三在工作
console.log( w.run() ); // 张三在运动
网友评论