TypeScript教程(九)接口约束类
日期:2021-04-26
来源:程序思维浏览:2052次
在面向对象编程中,接口是一种规范的定义,它定义了行为和动作规范,在开发大型项目时通常采用面向对象的编程思路,那么就要用到接口来约束类,实现高内聚低耦合的代码规范。接下来看一下代码示例:
interface ISuperMan{
age:number;
name:string;
fly();
}
class Man implements ISuperMan{
age:number=30;
name:string="超人";
eat(){
console.log(this.name+"在飞")
}
}
使用implements关键字可以让类继承接口,继承后表示约束了这个类,那么这个类必须要实现这个接口的所有成员属性和成员方法。在ISuperMan接口中age和name表示类中的成员属性,fly()表示成员方法,在接口中定义成员方法有几种形式均可使用:
一个类也可以继承多个接口,代码示例如下:
interface ISuperMan{
age:number;
name:string;
fly();
}
interface IIronMan{
eat:Function
}
interface ISpiderMan{
run:()=>void
}
class Man implements ISuperMan,IIronMan,ISpiderMan{
age:number=30;
name:string;
fly(){
console.log(this.name+"在飞");
}
eat(){
console.log(this.name+"在吃饭");
}
run(){
console.log(this.name+"在跑");
}
}
let man=new Man();
man.name="超人";
man.fly();
man.name="钢铁侠";
man.eat();
man.name="蜘蛛侠";
man.run();
注意代码加粗的地方,在implement关键字后面使用逗号作为分隔符可以继承多个接口,继承后该类必须实现所有接口内部的属性和方法。
一个接口也可以继承多个接口,看一下代码示例:
interface ISuperMan{
age:number;
name:string;
fly();
}
interface IIronMan{
eat:Function
}
interface ISpiderMan{
run:()=>void
}
//一个接口也可以继承多个接口
interface IMan extends ISuperMan,IIronMan,ISpiderMan{}
class Man implements IMan{
age:number=30;
name:string;
fly(){
console.log(this.name+"在飞");
}
eat(){
console.log(this.name+"在吃饭");
}
run(){
console.log(this.name+"在跑");
}
}
let man=new Man();
man.name="超人";
man.fly();
man.name="钢铁侠";
man.eat();
man.name="蜘蛛侠";
man.run();
注意上面代码加粗的地方,定义了一个IMan接口使用extends关键字继承了ISuperMan,IIronMan,ISpiderMan接口,这个IMan拥有了父接口定义的规范,使用Man类继承IMan接口这个类必须要实现接口中所有的属性和方法。
interface ISuperMan{
age:number;
name:string;
fly();
}
class Man implements ISuperMan{
age:number=30;
name:string="超人";
eat(){
console.log(this.name+"在飞")
}
}
使用implements关键字可以让类继承接口,继承后表示约束了这个类,那么这个类必须要实现这个接口的所有成员属性和成员方法。在ISuperMan接口中age和name表示类中的成员属性,fly()表示成员方法,在接口中定义成员方法有几种形式均可使用:
- fly()
- fly:Function
- fly:Object
- fly:()=>void
一个类也可以继承多个接口,代码示例如下:
interface ISuperMan{
age:number;
name:string;
fly();
}
interface IIronMan{
eat:Function
}
interface ISpiderMan{
run:()=>void
}
class Man implements ISuperMan,IIronMan,ISpiderMan{
age:number=30;
name:string;
fly(){
console.log(this.name+"在飞");
}
eat(){
console.log(this.name+"在吃饭");
}
run(){
console.log(this.name+"在跑");
}
}
let man=new Man();
man.name="超人";
man.fly();
man.name="钢铁侠";
man.eat();
man.name="蜘蛛侠";
man.run();
注意代码加粗的地方,在implement关键字后面使用逗号作为分隔符可以继承多个接口,继承后该类必须实现所有接口内部的属性和方法。
一个接口也可以继承多个接口,看一下代码示例:
interface ISuperMan{
age:number;
name:string;
fly();
}
interface IIronMan{
eat:Function
}
interface ISpiderMan{
run:()=>void
}
//一个接口也可以继承多个接口
interface IMan extends ISuperMan,IIronMan,ISpiderMan{}
class Man implements IMan{
age:number=30;
name:string;
fly(){
console.log(this.name+"在飞");
}
eat(){
console.log(this.name+"在吃饭");
}
run(){
console.log(this.name+"在跑");
}
}
let man=new Man();
man.name="超人";
man.fly();
man.name="钢铁侠";
man.eat();
man.name="蜘蛛侠";
man.run();
注意上面代码加粗的地方,定义了一个IMan接口使用extends关键字继承了ISuperMan,IIronMan,ISpiderMan接口,这个IMan拥有了父接口定义的规范,使用Man类继承IMan接口这个类必须要实现接口中所有的属性和方法。
精品好课