typescript 类的学习

类的概念

定义类的关键字为 class,后面紧跟类名,类可以包含以下几个模块(类的数据成员):

  • 字段 − 字段是类里面声明的变量。字段表示对象的有关数据。
  • 构造函数 − 类实例化时调用,可以为类的对象分配内存。
  • 方法 − 方法为对象要执行的操作。

索引签名

class myClass{
   [s:string]:boolean | ((s:string) => boolean ) 
	上面的定义,就是索引签名的意思,意味着,在类里定义的属性及方法等,必须满足上面的限制条件。具体的解释是:
	有一个或多个定义的属性s ,是string类型的,返回值是boolean或者是一个函数,需要有一个参数,string类型的,返回也是布尔类型的才可以
}

看一下报错的
在这里插入图片描述
1 x那里报错,看看错误是什么
在这里插入图片描述
这里的意思就是,x声明成了number类型,但是我们定义的索引签名是string类型的,所以不行。智能写成x:string=‘’;

第二个,第三个报错,大都异曲同工了。所以说,数字签名是为了规范类里面多个自定义内容而设定的。

继承

implements是用来继承接口的,一般是类继承接口,当然也可以接口继承接口;必须要实现接口已经定义的属性及方法。跟java里的抽像类和接口的概念差不多。
extends一般是类继承类的。基类。拥有基类的所有方法及属性。继承之后可以重写。实例化时,会先初始化父类的属性及方法,然后才是子类的属性和方法。

这里可以参考java来学习。因为类的概念是从java映射过来的。
首先,我们看下new关键词的作用
1 声明的作用,意思就是说,我已经声明了一个变量,用来存储new之后的东西;
2 实例化的作用,创建这个对象。并进行内存分配等操作。
3 初始化的作用,初始化最开始的属性和方法。

而前端中,new 关键字的作用
1 声明的作用,创建一个对象,之后该干嘛就干嘛
2 对定原型链及绑定this;其实说白了,也是内存分配的一个过程
3 初始化的作用

所以,自然而然的,java和前端中的类,是有着千丝万缕的关系的。都有继承,多态等属性。
我们先看下java中这些概念:
(1) 重载:在同一个类中,方法名相同,但各自参数不同(包括参数个数、参数顺序、参数类型)。都称为重载overload;
(2)继承:子类继承父类的可被继承的属性及方法。
(3)重写:如果子类在继承父类的方法时,又定义了一个与父类方法签名完全相同的方法,叫做重写override;
(4)多态:多态就是多种状态,产生的必要条件是父类引用子类的方法产生的多种状态。与属性什么的无关。这里举个例子:
在这里插入图片描述
首先有个动物类的父类,然后是猫和狗的子类。我们在实例化父类时,可以用猫和狗进行new;所以动物类调用叫声的方法,可以是狗叫,也可以是猫叫。这就是多态了。就是调用方法方法返回的多种状态。

super关键字

同样,这里也考虑java和前端的区别。
在java中,专门提供了一个super关键字来访问父类的成员。例如属性,方法和构造方法。super表示当前对象的直接父类对象。说白了,就是子类调用父类时使用的代理。
说到super,我认为必须要提下构造方法。其主要作用是:
1 创建对象时,初始化对象。为对象的成员变量赋初始值。必须与类名相同。能够重载。
2 没有返回值,可以有return,这里的return表示结束,而不是返回的意思
3 在定义类时,如果没有构造方法,则默认是一个无参的狗仔方法,且不执行任何代码。
关于调用
1 继承时,子类只能调用父类的默认无参构造函数,如果父类没有,则不调用。如果需要调用非默认构造函数,则需要用super来实现。
2 子类必须调用父类的构造函数

但是在前端哈,我们的构造方式,都统一是constructor;同样的道理
1 构造函数不能有返回值,可以有return;
2 这里呢,不能重载构造函数哈;不像java里面,可以有多个构造函数
3 如果子类继承父类,也有构造函数,则必须使用super(),放在头部声明,规定的格式。

一些常用的关键字

private 声明私有变量,只有该类可以使用
protect 受保护的,能够被自身及子类访问
public 可以提供给外部任何地方使用的
static 静态成员。可以直接通过类名调用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

李卓书

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值