代碼:
// 本節內容 // 1.類的定義 // 2.類的繼承 // 3.訪問修飾符 // 4.靜態屬性和靜態方法 // 5.抽象類和多態 // js // function Person(name) { // this.name = name; // this.print = function() { // console.log(this.name) // } // } // var p = new Person("aa") // p.print() // ts 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("張三",20) console.log(p.print()) // 2.類的繼承 class Student extends Person { cardnumber:string; school:string; constructor(cardnumber:string, school:string){ super("zhangsan", 19) this.cardnumber = cardnumber; this.school = school } dohomework(){ return this.name + "今年" + this.age + "歲,就讀於" + this.school + "編號" + this.cardnumber } } // var stu1 = new Student("zhangsan",20) // stu1.cardnumber = "1001" // stu1.school = "北京大學" var stu1 = new Student("1001","北京大學") console.log(stu1.dohomework()) // 接口的繼承 interface Printer { getmsg(); } interface ColorPrinter extends Printer { printing(); } class HPPrinter implements ColorPrinter { printing(){ console.log("打印成功") } getmsg(){ console.log("HP10011") } } var hp = new HPPrinter() hp.getmsg() hp.printing() // 3.訪問修飾符 // public / private /protected class People { 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 People("zhangsan",20,"111@qq.com") console.log(p1.name) // console.log(p1.age) // console.log(p1.email) class Teacher extends People { show(){ console.log(this.name) // console.log(this.age) console.log(this.email) } } // 4.靜態屬性和靜態方法 // function Boss() { // // 實例屬性 // this.name = "zhangsan"; // // 實例方法 // this.print = function(){} // } // // 靜態屬性 // Boss.age = 19 // // 靜態方法 // Boss.show = function() {} // // 調用靜態方法 // Boss.show() // // 調用靜態屬性 // console.log(Boss.age) // // 調用實例方法和屬性 // var boss = new Boss() // boss.print() // console.log(boss.name) // ts class Boss { // 實例屬性 name:string; age:number; // 靜態屬性 static email:string; constructor(name:string,age:number,email:string){ this.name = name; this.age = age; Boss.email = email; } // 實例方法 print(){ return this.name + ":" + this.age } // 靜態方法 static show(){ console.log("show 方法") } } // 調用靜態方法 Boss.show() // 嗲用實例方法 var boss = new Boss("zhangsan",22,'111@qq.com') console.log(boss.print()) // 注:不依賴於類的方法,可以為靜態方法 // 5.多態(同一個父類,不同的子類,有不同的實現) class Animal { eat() { console.log("animal eat") } } class Cat extends Animal { eat() { console.log("貓吃魚") } } class Dog extends Animal { eat() { console.log("狗吃肉") } } var c = new Cat() c.eat() var d = new Dog() d.eat() // 6.抽象類/抽象方法 // 6.1 抽象類是提供其他類繼承的基類(父類),不能直接被實例 // 6.2 抽象方法只能包含在抽象類中,抽象類中可以包含抽象方法和非抽象方法 // 6.3 子類繼承抽象類,實現抽象方法 // 定義抽象類 abstract class Beast { // 定義抽象方法(抽象方法沒有具體的方法體) abstract eat(); run(){ console.log("run run run") } } class Tiger extends Beast { eat() { console.log("天王蓋地虎") } } var t = new Tiger() t.eat()
.