TypeScript学习之Class类/访问修饰符(3)

 9. Class类

在js中,类是一个特殊的函数,在这个函数中不仅可以定义函数表达,也可以声明这个函数,在类的语法中,包含两个部分:定义与声明。

怎么去理解面对对象、对象以及类呢?简单来说,对象就是一条狗子,类class就是对它的描述。

它能被大家看到的圆脑袋、大耳朵是它的公有属性;

它是男孩女孩只有它自己知道,这就是私有属性;

狗子会吃饭会睡觉会咬人,这是它的(成员)方法;而它只会对我摇尾巴撒娇,这是私有(成员)方法;

而我每天要对它喂水喂饭,这是传参;

---------------------------------------------------------------------------------------------------------------------------------

在对象外部直接访问内部成员变量甚至重新赋值,是不希望的,一般来说我们希望避免外界直接操作class内部属性

这时候就可以使用Access Modifier访问修饰符对访问class内部的方法或者变量加以限制

ts中,默认情况下所有的成员变量以及成员方法都是public,如果把我们的x 和 y 用private修饰,在外部访问时就会报错,这样就会避免一些问题的产生。

 当我们把x 和 y 改为私有属性时,Point类就报错了(Point类没有正确实现IPoint接口)。一般来说,在面向对象的概念中,接口就相当于一份说明书,在接口中定义的内容,不管是变量还是方法,全部都是公开的。可以在接口中删除掉定义的变量来处理。

 但是有些时候我们还是需要从外部访问x 和 y ,当删除掉接口中的变量后,我们的p.y是无法访问到这个成员变量的,这时候就可以借助getter 和 setter 方法。

所以我们把x属性变为私有属性时,给x赋值的唯一选择就是使用setter函数。

比如我们在赋值时,要求 x 和 y 都不能小于零,我们可以创建setX()方法,参数就是我们想要设定的具体数据。我们使用setX方法把 x 分别设置为10 和 -9,虽然编译器不会报错,但是运行代码是会报错的。

 setter方法就相当于在class内部建立一个缓冲带,通过缓冲带可以避免一些意料之外的非法输入。

当我们想要获取到函数中的数据时,就可以使用getter函数。

当我们完成获取x 和 y 坐标的方法,并且在IPoint中写入set get方法后,就可以在getDistances()中调用了。

 在ts中,set get还有另外一种写法。可以称之为懒人包的写法。

 

 需要赋值直接就是point.X 等于具体的数据,直接console.log就可以调用。这样处理的

好处就是get 和set不需要再写繁琐的代码,在进行赋值和调用时也不需要像函数一样调用,只需要像class的属性一样来使用就可以了。代码更加整洁。

这样写的话,在getDistances()调用时也要符合懒人包的定义。在接口中直接写大写X、Y表示接口的属性,在getDistances()中直接 .X就可以了。

 但是编译时会报错( Accessors are only available when targeting ECMAScript 5 and higher.)使用懒人包对ES的版本有要求。输入命令 tsc -target es5 文件名就可以啦。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值