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