TypeScript 面向?qū)ο笃渌鼉?nèi)容可看這篇文章 ??
TypeScript面向?qū)ο螅ㄒ唬惖溆琛?gòu)造函數(shù)封救、繼承)
一、抽象類
通過關(guān)鍵字
abstract
開頭定義一個抽象類
抽象類和其它類區(qū)別不大杏慰,被專門用作繼承的類测柠,不能再被創(chuàng)作為實例的類
抽象類中的抽象方法,只能定義在抽象類中缘滥,子類必須對抽象方法進行重寫
舉例
abstract class Animal {
//......
abstract sayHi(): void
}
class Dog extends Animal {
sayHi() { // 子類如果不寫此方法將會報錯
console.log('汪汪汪轰胁!')
}
}
// const an = new Animal() // 如果嘗試去創(chuàng)建一個抽象類的實例,會報錯朝扼!
const dog = new Dog()
dog.sayHi() // 汪汪汪赃阀!
二、接口
通過關(guān)鍵字
interface
來定義接口
接口可以在定義類的時候擎颖,限制類的結(jié)構(gòu)
接口中所有的屬性榛斯,都不能有實際的值
接口中所有的方法,都是抽象方法
interface myInter {
name: string;
sayHello(): void;
}
實現(xiàn)接口
通過關(guān)鍵字
implements
實現(xiàn)接口
interface myInter {
name: string;
sayHello(): void;
}
class haveInter implements myInter{
name: '孫悟空'; // 必須要有接口里的同名屬性
constructor(name) {
this.name = name
}
sayHello() { // 必須要有接口里的同名方法
console.log('哈哈哈哈')
}
}
點個贊再走唄~