1 -类方法
class Person{ name:string age:number constructor(name:string,age:number){ this.name = name; this.age = age; } getName():void{ console.log(this.name); }}var p:Person = new Person("cheng",20);p.getName();
class Person{ /* 实例的name */ name:string age:number getName():void{ console.log(this.name); }}var p:Person = new Person();p.getName(); // undefined//当没有构造函数的时候,代码底层有自动补全构造函数
2- static
//static修饰的变量是类所共有的,只能通过类名去调用。class Person{ /* 实例的name */ static skill:string = "js"; name:string age:number getName():void{ console.log(Person.skill) console.log(this.name); }}var p:Person = new Person();p.getName(); // js undefined
3.类的继承
//1.定义了一个Person类,包含name,age两个属性Class Person{ name:string; age:number; constructor(name:string,age:number){ this.name=name; this.age=age; } sayName(){ console.log(this.name) }}//2.extendsz子类会继承父类的属性和方法class Students extends Person{ skill:string; //super指父类,只能放在子类构造方法中的第一行 constructor(name:string,age:number,skill:string){ super(name,age); this.skill =skill; } saySkill():void{ console.log(this.skill); }}var s:Student =new Student("lisi",18,"vue");console.log(s);s.sayName();
4- 多态
//根据传入的对象,动态决定调用谁的方法interface Animal{ eat():void;}class Cat implements Animal{ eat():void{ console.log("鱼") }}class Dog implements Animal{ eat():void{ console.log("骨头") }}class Farmer{ feed(obj:Animal){ obj.eat(); }}var f:Farmer = new Farmer();f.feed(new Cat());f.feed(new Dog())