TypeScript 中重载( overload )、重写( override )

为了提高效率效率,我们通常会用到重载和重写两种那个方式。

一、重载

重载:方法名称相同,参数的类型或者个数不同。

重载是面向对象编程的一种特有的方法,它允许一个函数在实现的过程中有多个入口,而且只需要实现一次

方法重载示例:

function overload(x: string, y: string): void;
function overload(x: number, y: number): number;
function overload(x: number, y: number, z: number): number;
function overload(x: any, y: any, z?: number): any{
    // 使用 ?: 来表示可选参数
    if (typeof y === 'number' && !z) {
        return x + y;
    }
    if (z) {
         return x + y + z;
    }

    console.log(`test ${x} ${y}`);
}
console.log(overload(20, 30));       // 50
console.log(overload(20, 30, 40));   // 90
overload('xtest', 'ytest');          // test xtest ytest

构造器重载示例:

class Overload{
    overload(x: string, y: string): void;
    overload(x: number, y: number): number;
    overload(x: number, y: number, z: number): number;
    overload(x: any, y: any, z?: number): any{
        // 使用 ?: 来表示可选参数
        if (typeof y === 'number' && !z) {
            return x + y;
        }
        if (z) {
            return x + y + z;
        }

        console.log(`test ${x} ${y}`);
    }
}
var ol = new Overload();             
console.log(ol.overload(20, 30));         // 50
console.log(ol.overload(20, 30, 40));     // 90
ol.overload('xtest', 'ytest');            // test xtest ytest

通过上述代码,我们可以看出重载会根据参数来决定要从对应的入口进入并执行代码块。

二、重写

重写:方法名称,参数名称,返回值类型全部相同

特点:当父类和其派生类拥有同一个方法时,这种情况就是方法的重写

作用:在拥有父类方法特征的同时,自身也可以有一些特有的特征

class Person {
	major(){
		console.log('计算机专业');
	}
}
class Student extends Person {
    constructor() {
        super()
    }
    major() {
        console.log('航天工程专业')
        super.major()
    }
    sex() {
        
    }
}
var student = new Student();
student.major();
// 航天工程专业
// 计算机专业

通过上述代码,方法重写相当于是js原型链查找过程。( 移步到原型链文章 ).

注意:js不支持方法重载,同名方法会被最后装载的方法覆盖。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值