7.接口
<p>接⼝梳理:
1.接⼝⽤于限制⼀个类中包含哪些属性和⽅法:</p>
<pre><code>// Person接⼝
interface Person {
// 属性声明
name: string
age: number
// ⽅法声明
speak():void
}
// Teacher实现Person接⼝
class Teacher implements Person {
name: string
age: number
// 构造器
constructor(name: string,age: number){
this.name = name
this.age = age
}
// ⽅法
speak(){
console.log('你好!我是⽼师:',this.name)
}
}</code></pre>
<p>2.接⼝是可以重复声明的:</p>
<pre><code>// Person接⼝
interface PersonInter {
// 属性声明
name: string
age: number
}
// Person接⼝
interface PersonInter {
// ⽅法声明
speak():void
}
// Person类继承PersonInter
class Person implements PersonInter {
name: string
age: number
// 构造器
constructor(name: string,age: number){
this.name = name
this.age = age
}
// ⽅法
speak(){
console.log('你好!我是⽼师:',this.name)
}
}</code></pre>
<p>3.【接⼝】与【⾃定义类型】的区别:</p>
<p>接⼝可以:
1.当⾃定义类型去使⽤;
2.可以限制类的结构;
自定义类型:
1.仅仅就是自定义类型;</p>
<pre><code>// Person接⼝
interface Person {
// 应该具有的属性
name: string
age: number
// 应该具有的⽅法
speak():void
}
// Person类型
/*
type Person = {
// 应该具有的属性
name: string
age: number
// 应该具有的⽅法
speak():void
}
*/
// 接⼝当成⾃定义类型去使⽤
let person:Person = {
name:'张三',
age:18,
speak(){
console.log('你好!')
}
}</code></pre>
<p>4.【接⼝】与【抽象类】的区别:
抽象类:
1.可以有普通⽅法,也可以有抽象⽅法;
2.使⽤extends 关键字去继承抽象类;
接⼝中:
1.只能有抽象⽅法;
2.使⽤implements 关键字去实现接⼝
抽象类举例:</p>
<pre><code>
// 抽象类 —— Person
abstract class Person {
// 属性
name:string
age:number
// 构造器
constructor(name:string,age:number){
this.name = name
this.age = age
}
// 抽象⽅法
abstract speak():void
// 普通⽅法
walk(){
console.log('我在⾏⾛中....')
}
}
// Teacher类继承抽象类Person
class Teacher extends Person {
constructor(name:string,age:number){
super(name,age)
}
speak(){
console.log(`我是⽼师,我的名字是${this.name}`)
}
}</code></pre>
<p>接⼝举例:</p>
<pre><code>// 接⼝ —— Person,只能包含抽象⽅法
interface Person {
// 属性,不写具体值
name:string
age:number
// ⽅法,不写具体实现
speak():void
}
// 创建Teacher类实现Person接⼝
class Teacher implements Person {
name:string
age:number
constructor(name:string,age:number){
this.name = name
this.age = age
}
speak(){
console.log('我在⻜快的⾏⾛中......')
}
}</code></pre>