首页 > 代码库 > cs61b homework4
cs61b homework4
作业中没给测试代码,测试代码是从一亩三分地论坛上盗的别人的。
运行结果:
DList:
LockDList:
因为List之前的homework和project中已经实现过好几回了,所以感觉这次作业还比较轻松,没有怎么debug就出来了;
贴一下LockDList的代码好了:
LockDListNode:
package list; public class LockDListNode extends DListNode { boolean isLocked; LockDListNode(Object i, DListNode p, DListNode n) { super(i, p, n); isLocked=false; // TODO Auto-generated constructor stub } }
LockDList:
package list; public class LockDList extends DList { protected LockDListNode newNode(Object item, DListNode prev, DListNode next) { return new LockDListNode(item, prev, next); } public void lockNode(DListNode node) { if(node instanceof LockDListNode) ((LockDListNode)node).isLocked=true; else return; } public LockDListNode prev(DListNode node) { return ((LockDListNode)super.prev(node)); } public LockDListNode next(DListNode node) { return ((LockDListNode)super.next(node)); } public LockDListNode front() { return((LockDListNode)super.front()); } public LockDListNode back() { return ((LockDListNode)super.back()); } public void remove(DListNode node) { if(((LockDListNode)node).isLocked) return; else super.remove(node); } }
注意的是:1:子类overwrite方法只需要名称一致就行,返回的type类型可以变。
2:protected关键字在子类和同一package内均可使用(之前以为仅限定子类)
3:newNode方法很有用,可以避免LockDList中的代码重复
4:补充一点lecture里面讲到的关于Field shadow的问题:
choice of methods dictated by dynamic type.
choice of fields dictated by static type.
不知道咋样翻译准确些,就直接写英文的notes好了。
cs61b homework4
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。