您的位置:首页 > 编程语言 > Java开发

20155236 2016-2017-2 《Java程序设计》第四周学习总结

2017-03-19 15:37 344 查看

20155236 2016-2017-2 《Java程序设计》第四周学习总结

教材学习内容总结

1.继承基本上就是避免多个类间重复定义共同行为。

继承的三个好处:减少代码冗余;维护变得简单;扩展变得容易。

构造方法不能被继承。

2.s-a指的是类的父子继承关系,中文称为“是一种”关系。

多态:用抽象讲法解释,就是使用单一接口操作多种类型的对象。

3.被声明为protected的成员,相同包中的类可以直接存取,不同包中的类可以在继承后的子类直接存取。与我们熟知的关键字public之间来说,它的权限较小。

4.如果类有继承关系,在创建子类实例后,会先进行父类定义的初始流程,再进行子类中的初始流程,也就是创建子类实例后,会先执行父类构造函数定义的流程,再执行子类构造函数定义的流程。

5.Java中所有对象一定是一种Object.在Java中,自来只能继承一个父类,如果在定义类的时候没有指定要继承哪一类,那么这个类就一定是继承。

6.类要操作接口,必须使用implements关键字。操作某接口时,对接口中定义的方法有两种处理方式,一是操作接口中定义的方法,二是再度将该方法标示为abstract。

7.临时继承某个类或操作某个接口并建立实例,可使用匿名内部类:new 父类()|接口(){// 类本体操作 };。

教材学习中的问题和解决过程

在编译第二个程序时,因为类的关系导致无法编译,于是下载了idea,这上面很方便,把每个代码放入同一project里问题就可以解决。

检查多态语法逻辑是否正确,方式是从右向左读,即右边类型是不是左边类型的子类?不是的话会编译失败,如果加扮演cast语法,虽然可以通过编译,但是执行时是扮演失败,会抛出classCastException.

在drawfight()方法中声明的role类型的参数,方法中调用的,到底是Role中定义的fight()还是个别子类中定义的fight()?

Swordsman上挂有Role的牌子,我们只是要求有Role牌子的对象攻击,那么发动攻击的对象就是Swordsman实例。我们所写的drawfight(Swordsman)意味着,我们此次操作的是挂有role牌子的Swordsman实例。

想问一下老师,什么叫做操作抽象方法?

代码调试中的问题和解决过程

在“重新定义行为”这一节中,我们应先将role类中添加fight()方法,再给Swordsman与Magician两个子类中加入对于fight的描述。因为有了idea,所以我们可以统一修改role。

想问一下老师,这个程序我按照书上的打下来后,并不能停止访客名称的录入,无法输出访客名单= =不知道为什么。





代码托管

代码提交过程截图:



代码量截图:



上周考试错题总结

填空:Linux Bash中,(grep)命令可以进行全文搜索。

grep命令能使用正则表达式搜索文本,并把匹配的行打印出来。

判断:Java中类总会有默认构造方法。(X)

对于java而言,如果每个类中,你不先写构造方法,它都默认存在一个无参的构造方法。故本题错。

其他(感悟、思考等,可选)

子类和父类中定义某个方法时,必须保持一致,不然就会出现行为丢失。但我们现在可以在定义方法前加上@Override去要求编译程序检查。感觉这周的内容,自学的话并不能很懂。。。老师能不能在课堂上讲一下重点,我有点懵逼了。。

学习进度条

代码行数(新增/累积)博客量(新增/累积)学习时间(新增/累积)重要成长
目标5000行30篇400小时
第一周20/201/110/10
第二周58/781/26/16
第三周200/2781/310/26
第四周660/9381/410/36
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: