关于视频2-4中使用keyword "this"的问题

来源:2-4 数组中查询元素和修改元素

聪明的土拨鼠

2018-04-29

波波老师您好,在视频2-3中,您使用的第二consturctor是没有参数的并且用到this这个keyword。一般来说,this用于一个class里面有两个overloaded constructors,一个有参数,一个没有参数,这样在没有参数的constructor中使用this就能调用有参数的那个constructor。我的疑惑是,在这种情况下,为什么还有去设置这个没有参数的constructor。如果只是为了调用前面的construcotor,为什么不直接使用那个有参数的construcotor了?谢谢您的回答。

写回答

1回答

liuyubobobo

2018-04-29

主要是给使用的用户提供方便。


在这一节中,Array的有参数的构造函数,传入的参数是capacity。它的意义在于,如果用户了解capacity的意义,并且明确自己使用的数组的最大容量,可以将这个最大容量值直接用于构造Array。这样构造的Array,用户在使用过程中,不会产生resize,效率更高。


但如果用户不知道capacity是干什么用的,或者用户无法确认自己创造的数组的最大容积,在构造Array的时候,强行要求用户传入一个capacity,对用户是一个负担。这有点儿像你去点菜,如果你知道自己要吃什么,自然可以自己去点,但是你不确定自己喜欢吃什么,我们提供一个推荐套餐,省去了你自己搭配的麻烦。其实,对于我们的Array来说,用户不了解capacity是完全不影响他们使用这个Array的,直接使用没有参数的构造函数把这个Array构造出来用就好了:)


在计算机的接口设计上,经常有这种情况,同样的接口,只是调用参数的多寡区别。调用参数少的接口,通常只是对其他参数使用默认值而已。他们背后的思考是一样的:让用户有一个更简单的选择,而不是对每一个参数都要进行自定义:)

2
1
聪明的土拨鼠
非常感谢!
2018-10-02
共1条回复

玩转数据结构

动态数组/栈/队列/链表/BST/堆/线段树/Trie/并查集/AVL/红黑树…

6221 学习 · 1704 问题

查看课程