抽象方法是定义在抽象类当中的,和抽象类的基本思路一样,都是用于被继承的,但是抽象方法里面不能写具体代码只能定义,而且**抽象方法必须在子类中实现**
//
abstract class Aniaml {
name: string
constructor(name: string) {
this.name = name
}
sayHelly() {
console.log('hello')
}
abstract sayName():void
}
class Dog extends Aniaml {
sayName() { //这里不去重写实现则会报错
console.log('汪汪汪')
}
}
let dog = new Dog('小狗')
dog.sayName()
抽象方法必须指定这个抽象方法的返回类型,而且实现的方法返回的数据如果不是viod,则必须和这个抽象方法指定的返回类型一致。如果方法不返回,则必须指定:void
abstract class Aniaml {
name: string
constructor(name: string) {
this.name = name
}
sayHelly() {
console.log('hello')
}
abstract sayName():number //指定返回类型为数字
}
class Dog extends Aniaml {
sayName() {
console.log('汪汪汪')
return 100 //抽象方法指定返回数字,则这里只能返回数字
}
}
let dog = new Dog('小狗')
dog.sayName()
如果不返回则必须指定void:
abstract class Aniaml {
name: string
constructor(name: string) {
this.name = name
}
sayHelly() {
console.log('hello')
}
abstract sayName():void //指定void
}
class Dog extends Aniaml {
sayName() {
console.log('汪汪汪') //只执行代码,不返回数据
}
}
let dog = new Dog('小狗')
dog.sayName()