class Person{ public name:string; constructor(name:string){ // 构造函数 实例化类的时候触发的方法 this.name = name; } getName():string{ return this.name; } setName(name:string):void{ this.name = name; } } let p = new Person('张三'); alert(p.getName()); p.setName('李四'); alert(p.getName());
类的继承 extends super
class Children extends Person{ constructor(name:string){ super(name); //super表示调用父类的构造函数 } } var c = new Children('李四'); alert(c.getName());
类里的修饰符 (不加修饰符,默认为public)
- public: 公有 ,在类里,类外及子类都能访问
- protected:保护类型,在类里以及子类能访问
- private: 私有, 在类里才能被访问
类的静态属性,静态方法 (可直接调用,不必实例化 )
在class 类中 的方法或者属性前加 static
class Person{ public name:string;
static age:number = 20 constructor(name:string){ // 构造函数 实例化类的时候触发的方法 this.name = name; } static run(){ //静态方法 静态方法里不能直接调用类里的属性 alert('在运动'+Person.age); } } Person.run();
多态 父类定义一个方法不去实现,让继承它的子类去实现,每一个子类有不同的表现
class Animal { public name:string; constructor(name:string) { this.name = name; } eat(){ alert("吃的方法") } } class Dog extends Animal { constructor(name:string) { super(name); } eat(){ return this.name + "吃骨头" } } class cat extends Animal { constructor(name:string) { super(name); } eat(){ return this.name + '吃鱼头' } }
抽象方法以及抽象类
抽象类:它是提供其它类继承的基类,不能直接被实例化
用 abstract 关键字定义抽象类和抽象方法,抽象类中的抽象方法不包括具体实现并且必须在派生类中实现
抽象类和抽象方法用来定义标准
注意:抽象方法只能放在抽象类中
abstract class Animal { public name:string; constructor(name:string) { this.name = name; } //抽象方法在抽象类中不能实现 abstract eat():void; } class Dog extends Animal { constructor(name:string) { super(name); } //抽象类中的方法在子类中必须实现 eat(){ return this.name + "吃骨头" } }