楼主: jaly50
跳转到指定楼层
上一主题 下一主题
收起左侧

Berkeley CS 61B Data Structures(in Java) Homework4 加分+讨论帖

 
🔗
jev9 2016-6-11 09:32:50 | 只看该作者
全局:
fishgo 发表于 2016-5-12 15:43
有意思啊,多态、继承的特点就在part3体现出来了,做完了再回味一下~
在LockDList里面只要override remove ...

所以为什么只需要override remove和newNode呢?我还是没有搞太懂啊。。。求教啊
回复

使用道具 举报

🔗
KKKaaiii 2016-6-19 20:22:40 | 只看该作者
全局:

前两天出去玩了,本来学的就不踏实,玩了几天全忘了。回来又被hw4,project1,hw5卡了一星期。今天灵光一现,解决了hw5中的一个问题,立马回来解决了hw4,明天上传hw5!

评分

参与人数 1学分 +1 收起 理由
yingy4 + 1

查看全部评分

回复

使用道具 举报

🔗
陈不勺 2016-6-24 13:28:00 | 只看该作者
全局:
膜拜了大神的分析  发现newNode真好用  终于搞定
只是有一个问题:

        LockDListNode(Object i, DListNode p, DListNode n) {
                super(i, p, n);
                this.item = i;
                this.prev = (LockDListNode)p;
                this.next = (LockDListNode)n;
                lockState = false;
        }


在LockDListNode中的constructor大家都是这样写的吗?。。之前只写了个super。。总有bug。。然后在后面重新initiate了一遍就好了。。
不太理解为啥非得加个super。。然后还要重新initiate一遍。。
我觉得是因为super(i, p, n)只是把LockDListNode对象中的父类fields赋值了,而没有赋值本身的fields
既然这样super的意义在哪里。。
更多图片 小图 大图
组图打开中,请稍候......

评分

参与人数 1学分 +1 收起 理由
yingy4 + 1

查看全部评分

回复

使用道具 举报

🔗
reedme17 2016-7-2 15:13:49 | 只看该作者
全局:
这次花了些时间。
更多图片 小图 大图
组图打开中,请稍候......

评分

参与人数 1学分 +1 收起 理由
yingy4 + 1

查看全部评分

回复

使用道具 举报

🔗
starsyork 2016-7-8 17:27:20 | 只看该作者
全局:
重写了newNode 和 remove。

评分

参与人数 1学分 +1 收起 理由
yingy4 + 1

查看全部评分

回复

使用道具 举报

🔗
SelinaMY 2016-7-11 14:48:04 | 只看该作者
全局:
多亏看了小伙伴们的讨论才能成功做出来,父类和子类变量的static type和dynamic type确实要搞清楚。java中对变量的方法调用采用的是dynamic method lookup,也就是说对于变量 DList list = new LockDList(); list.newNode() 方法调用的是dynamic type的方法,也就是子类重写后的newNode方法。

然而对于static type是父类的变量,无法调用子类中新定义的方法。例如 DList list = new LockDList(); list.lockNode() 报错,必须要把list暂时变成static type 为 LockDList: ((LockDList) list).lockNode().

这是我的test结果:
TestDList:


TestLockDList:

更多图片 小图 大图
组图打开中,请稍候......

评分

参与人数 1学分 +1 收起 理由
yingy4 + 1

查看全部评分

回复

使用道具 举报

🔗
zhuyingcau 2016-7-14 12:37:12 | 只看该作者
全局:

Homework4:参考了小伙伴们的讨论,总算是完成了 ~





对于superclass、subclass、inherit、override也有了更加深刻的理解:
1.在subclass中以及main函数中,所有函数接口(参数和返回值类型)仍然使用superclass(DList)的类型,而在subclass中override的函数体中进行动态类型、静态类型转换。终于理解了为什么老师说用户根本不用知道subclass是怎么写的,仍然使用superclass的对象就可以进行功能实现。
2.值得注意的是,动态类型为subclass的可以直接赋值给superclass的静态类型,反之必须强制转换。
3.变量静态类型为superclass时,虽然动态类型是subclass,但是仍然无法通过该变量访问subclass的成员,一定要将该变量强制转换为subclass才行。


DList:




LockDList:



评分

参与人数 1学分 +1 收起 理由
yingy4 + 1

查看全部评分

回复

使用道具 举报

🔗
xiaosteven 2016-7-15 05:50:55 | 只看该作者
全局:
这次作业感觉对多态的理解有了很多的提高,不过还是很多地方似懂非懂,请问那位大神能给更多关于多态,继承,cast的例子呢?
更多图片 小图 大图
组图打开中,请稍候......

评分

参与人数 1学分 +1 收起 理由
yingy4 + 1

查看全部评分

回复

使用道具 举报

全局:
这次作业确实让我理解了一个比较tricky的地方,也就是说例如当子类调用父类的方法f()时,如果父类的方法f()中调用了该类的其他方法C()且C()在子类中被覆盖,那么在执行时会执行C()在子类中的版本而不是父类的。
更多图片 小图 大图
组图打开中,请稍候......

评分

参与人数 1学分 +1 收起 理由
yingy4 + 1

查看全部评分

回复

使用道具 举报

🔗
xavier90 2016-7-19 20:17:56 | 只看该作者
全局:
有点似懂非懂,虽然作业做完了。。。
更多图片 小图 大图
组图打开中,请稍候......

评分

参与人数 1学分 +1 收起 理由
yingy4 + 1

查看全部评分

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册账号
隐私提醒:
  • ☑ 禁止发布广告,拉群,贴个人联系方式:找人请去🔗同学同事飞友,拉群请去🔗拉群结伴,广告请去🔗跳蚤市场,和 🔗租房广告|找室友
  • ☑ 论坛内容在发帖 30 分钟内可以编辑,过后则不能删帖。为防止被骚扰甚至人肉,不要公开留微信等联系方式,如有需求请以论坛私信方式发送。
  • ☑ 干货版块可免费使用 🔗超级匿名:面经(美国面经、中国面经、数科面经、PM面经),抖包袱(美国、中国)和录取汇报、定位选校版
  • ☑ 查阅全站 🔗各种匿名方法

本版积分规则

>
快速回复 返回顶部 返回列表