// 1类的定义 class Person{ name:string; age:number; constructor(name:string,age:number){ this.name=name; this.age=age; } print(){ return this.name+":"+this.age } } var p=new Person('zhangsan',20) console.log(p.print()) // 类的继承 // class Student extends Person{ // cardnumber:string; // school:string; // dohmoework(){ // return this.name+"今年"+this.age+"岁,就读于"+this.school+"学号"+this.cardnumber // } // } // let stu=new Student('王笑',20) // stu.cardnumber="10" // stu.school="大学" // console.log(stu.dohmoework()) class Student extends Person{ cardnumber:string; school:string; constructor(cardnumber:string,school:string){ super('马大哈',10); this.cardnumber=cardnumber; this.school=school; } print(){ return this.name+"今年"+this.age+"岁,就读于"+this.school+"学号"+this.cardnumber } } let stu=new Student('10','大学'); console.log(stu.print()) //子类自己身上有的方法不会取父类身上找 马大哈今年10岁,就读于大学学号10 // 接口的继承 interface Printer1{ getmsg1(); } interface ColorPrinter extends Printer1{ printing1() } class Hpprinter implements ColorPrinter{ printing1(){ console.log('打印成功') } getmsg1(){ console.log('HP1020490') } } var hp=new Hpprinter() hp.getmsg1() hp.printing1() // 访问修饰符 // public(公共的) private(私有的) protected(受保护的) class Person1{ public name:string; private age:number; protected email:string constructor(name:string,age:number,email:string){ this.name=name; this.age=age; this.email=email; } print(){ return this.name+":"+this.age } } var P1=new Person1('zhangsan',15,'142355@qq.com'); console.log(P1.name); // console.log(P1.age) 因为age设置了 private私有属性所以访问会报错 // console.log(P1.email) 因为email设置了受保护的属性,所以访问也会报错 只有它的子类可以访问 class mStudent extends Person1{ show(){ console.log(this.email) //是Person1的子类所以可以访问email } } // javascript的静态属性和静态方法 function People(){ // 实例属性 this.name="zhangsan" // 实例方法 this.print=function(){ } } People.age=19 //静态属性 // 静态方法 People.print=function(){} People.print()//调用静态方法 console.log(People.age) var p2=new People() p2.print()//调用实例方法 class Person2{ // 实例属性 public name:string; static age:number; protected email:string constructor(name:string,age:number,email:string){ this.name=name; this.email=email; } print(){ return this.name+":" } // 静态方法 static show(){ } } // 调用静态方法 Person2.show(); var p3=new Person2('wangxiao',11,'@qq') console.log(p3.print()) // 多态 同一个父类下边不同的子类可以有不同的实现 class Animal{ eat(){ console.log('animal is eat') } } class Cat extends Animal{ eat(){ console.log('猫吃鱼') } } class Dog extends Animal{ eat(){ console.log('狗吃肉') } } var cat1=new Cat() cat1.eat(); // 抽象类、抽象方法 // 抽象类是提供其他类继承的基类(父类),不能直接被实例 // 抽象方法只能包含在抽象类中,抽象类中可以包含抽象方法和非抽象方法 // 子类继承抽象类,实现抽象方法 // abstract 抽象类关键字 abstract class Animal1{ abstract eat(); run(){ console.log("run in run") } } class Cat1 extends Animal1{ eat(){ console.log('猫吃鱼1') } } class Dog1 extends Animal1{ eat(){ console.log('狗吃肉1') } } let c1=new Cat1(); c1.eat(); let d1=new Dog() d1.eat()