类的定义
类结构与java类似
class C {
//属性
name: string;
//构造函数
constructor(name: string) {
this.name = name;
}
//方法
run() {
console.info(`${this.name}`)
}
//方法也可以这样写
run1 = () => {
}
}
修饰符
修饰符和java一样,有三种,若不写则为public
public
(默认),任何地方都可以访问
protected
,只能在本类和子类中访问
private
,只能在本类中访问
private name: string;
protected age: number;
public gender: number;
继承
继承语法和Java一样
//父类
class C {
name: string;
constructor(name: string) {
this.name = name;
}
}
//子类
class C1 extends C {
constructor(name: string) {
//super一定不能写掉
super(name);
}
}
静态属性和方法
class C {
static name: string;
constructor(name: string) {
this.name = name;
}
static run(){
}
}
抽象类
和Java一样,在类和方法上标识abstract
关键字代表抽象类和抽象方法,抽象类不能创建实例,抽象方法没有方法体,具体方法由子类实现
abstract class Abs {
//抽象方法没有具体实现,ts就不能自动判断类型,所以抽象方法要明确返回类型
abstract run(): any;
}
多态
多态的用法和java一样,子类实例可以赋值给父类类型,调用子类实例方法
class C {
private name: string;
constructor(name: string) {
this.name = name;
}
public run() {
console.info(`${this.name}`)
}
}
class C1 extends C {
constructor(name: string) {
super(name);
}
}
let c: C;
//c的类型是C,C1继承了C,所以可以将C1类型实例赋值给c
c = new C1("abc");