Datehoer的博客
我本将心向明月,奈何明月照沟渠
Datehoer的博客

当前位置:主页 > 技术分享 > typescript class(类)

typescript class(类)

浏览: 作者:Datehoer 发布日期:2021-01-16 23:31:18 来源: 原创
如果有关注我们的读者可以看到前面是有写关于typescript的内容的,今天我们来简单介绍一下typescript中的class(类)。
  • 类:定义了一切事物的抽象特点
  • 对象:类的实例
  • 面对对象三大特性:封装、继承、多态
 
  • 封装:将数据操作的细节隐藏起来,只暴漏对外的接口,外界不知道细节,只能通过接口访问。
  • 继承:子类继承父类,子类除了拥有父类的特征外还有一些具体的特性
  • 多态:由继承产生了相关的不同的类,对不同的方法有不同的响应。针对某个实例,可以直接调用某个方法而不用管是哪个类
我们简单来看一下实例,通过实例的讲解,可能会有关于typescript类的更好的收获。

typescript class(类)


面对对象给人一种上帝的感觉,首先是绘制蓝图,创建一个类叫animal,这是一个基本类,我们的蓝图是这么样绘制的,可以看到类中有一个构造函数,这是一个实例化然后执行的逻辑,然后我们有一个方法run(),里面只是简单的输出一行话,然后我们创建一条蛇,名字叫lily,然后我们让他使用run()这个方法,看下结果。


typescript class(类)

typescript class(类)

我们创建一个新的类,继承了animal这个类,然后我们除了有run这个方法外,还添加了一个bark使用extends继承继承以后呢,我们自然就会拥有上面父类所拥有的属性和方法了。 然后我们创建一只狗,名字叫xiaobao,之后调用它的run以及bark
方法。

typescript class(类)

typescript class(类)


然后简单说一下多态,可以看到我们对constructor重写,注意,我们要重写函数的话,需要使用这个super方法才行,可以看到我们添加了一个console.log然后又把run重写了一下。

可以看一下run这个方法,我们如果要调用父类的方法的话,需要使用super这个关键字才行。
 

typescript class(类)

以上皆为类的实例,实例上的属性,实例上的方法。

那么我们类是否有可以直接访问的属性和方法呢?

这里就要用到前面的static了,简单定义一下static categories = ["mammal"],我们创建了一个静态属性。
 

typescript class(类)

我们在后面添加一个console.log(Cat.categories)直接调用一下,看一下结果。

typescript class(类)

可以看到定义的mammal出现了,这说明我们可以直接访问静态的属性,为什么要用这样的静态属性或者方法呢?
是因为我们定义的和这个实例的状态没有太大的关系。
 
前面是简单介绍了一下class(类),接下来我们回归typescript的正题。

 typescript提供了三种修饰符。
  • public:修饰的属性或方法是共有的。 可以在任何地方被调用到,我们的默认属性或者方法就是public。
  • private:修饰的属性或方法是私有的。  不能在声明它的类的外部调用。
  • protected:修饰的属性或方法是受保护的。  和private类似,但是还是有不同的地方,我们简单看一下例子。

typescript class(类)

这里我们将上面的代码换成ts,我们如果不想让run方法被其他人调用的话,可以直接添加privaterun方法前面,之后我们可以看到下面的snake调用run方法的时候报错了。

typescript class(类)


告诉我们不允许访问或者修改这个run方法,因为private定义了我们只能在类的内部进行修改。

那我们应该怎么样让子类访问父类的属性和方法呢?这时候就要用到前面的protected


typescript class(类)

如果我们将前面的private修改位protected的话,可以看到我们的子类可以调用父类的run了,这个就比较像是继承了,只有我和我的子女可以访问这个方法或者属性,外部人员一概无法访问。

但是我们有时候会有一些特殊的需求,比如说属性只能读不能写,该怎么实现呢?

typescript还给我们提供了一个特殊的修饰符号,来告诉我们这个属性只能读不能写。

typescript class(类)

 

这个修饰符号就是readonly

如果我们修改一下name这个属性获得到什么样的答案呢?
 

typescript class(类)

答案是自然不能修改的。

typescript class(类)

好了,今天关于typescript class(类)的内容就介绍到这里了,如果有什么疑问可以在评论区留言,我会在看到的第一时间进行回复的。



版权:本文由Datehoer原创,著作权归作者所有。商业转载请联系作者获得授权,非商业转载请保留以上作者信息和原文链接本文链接:https://zjzdmc.top/jsfx/125.html。

文章推荐

热门标签

返回顶部
下面为相关推荐
说点什么吧
  • 全部评论(0
    还没有评论,快来抢沙发吧!
  • QQQ 评论 typescript class(类):关于typescript class的内容写的不错。public:修饰的属性或方法是共