中级农民
- 积分
- 152
- 大米
- 颗
- 鳄梨
- 个
- 水井
- 尺
- 蓝莓
- 颗
- 萝卜
- 根
- 小米
- 粒
- 学分
- 个
- 注册时间
- 2015-12-13
- 最后登录
- 1970-1-1
|
这次作业更加深了我对ADT的理解.
这次作业里面的DList是ADT.
关于为什么我们要有ADT这个概念, 老师在课上曾经说过, 大概意思就是一个class和它的任何subclass都可以放在一起用处理 (前提是只能用superclass中的method, 所以任何subclass的static type都要是superclass). 比如这次作业中的DList和LockDList, LockDList是DList的subclass. DList中所有的method都继承到了LockDList中, 但是有一个问题就是这些method中用的都是DListNode, 这种node是没有lock的属性的. 所以, 我们只要把newNode这一个方法override (new一个dynamic type是LockDListNode, static type是DListNode的节点) 就可以保证在LockDList中所有的node既可以使用DList中的方法(因为他们的static type是DListNode), 又可以锁定一个node (通过cast到LockDListNode).
TestDList的结果:
TestLockDList结果:
|
|