CSE105 Inheritance

我不要你觉得,我要我觉得

Posted by KaKi on October 16, 2019

👴又回来啦

感觉最近也挺忙的,以后可能就都是这个更新频率了。

“可能是迄今为止最难的一节lab”

这周上的lab可能是有史以来跨度最大的一节,以至于让我一度觉得自己是个sb(可能本来就是)。 倒不是说这周课程需要敲的代码有多少,而是说许多上节课不清楚的概念,必须在这周彻底消化完毕。this代表什么?构造器(constructor)代表着什么,如何实现功能?我相信很多人可能到现在都还没有搞清楚。群里有很多大佬,很可惜我不是他们中的一员。但是我希望不要拉开距离,或许做个小小佬就不错。

最头疼的stage1

lab的stage1是卡我时间最长的一个,如果所有时间都计算在内的话我思考了这个问题有20个小时之久。它主要是要求你通过一个方法来进行计数,每当有数字进入,在最后显示Query: 1,Query: 2… 然而大部分的类它应该是非static——即动态的,那么如何保存这样一个不随变量初始化的数值呢?这使我思考了很久。其实不难写出这样的累加方法:

private int getNumOfQueries() {
    counter ++;
    return counter;
    }

那么如何保证初始化变量呢,显然应该是运用关键词static,具体还请各位多思考。

相对轻松的stage2(同样也是checkpoint)

做完stage1再看stage2,一开始我会想到counter和数组长度的关系,这使我带偏了很久。思考了才发现我不能简单的把counter认为就是长度:因为你无法引用最后一次的counter。这时候我回过来去看了ppt,收获不小:Array不能改变长度,但是ArrayList可以啊。具体语法ppt中也有,这里就不赘述了。只需在constructor里加入一行代码将其写入ArrayList中即可。具体加什么呢?想想toString()。

需要 “a bit of own research” 的stage3

做之前问了一句舍友,“这个难吗,我看说要一点自己的研究”

舍友说:确实是“一点”

川建国的引号

不过也没有难出天际,如果你在网上搜索了相关问题,会发现java其实本身不支持将子类对象转换为父类对象————因为这毫无意义,但是反过来却是java本身的特性,甚至不需你自己操作。

编程思路本身没有多难,写一个if-else语句然后return各自的对象即可(我没有对象),尤其是验证为true时直接return null即可。

但是如果为false呢?也不难,鉴于StockPricePlus只是个Plus版本而已,可以说在属性上是一点都没有变,我们直接将旧的值存入你要return的对象即可。当然这只是我能想到的办法,如果有更好的办法希望大佬们能告诉我。

总结

这周lab一上来确实有相当的难度,但是如果认真思考,理清概念也不是相当难的事情。我也无能狂怒了一段时间,但是做完还是发出真香的感叹,成就感max。

希望与大家共勉。