20155325 2016-2017-2 《Java程序设计》第4周学习总结
教材学习内容总结
-
封装就是将数据与相关行为包装在一起以实现信息就隐藏。
多态是指不同的类对象调用同一个签名的成员方法时将执行不同代码的现象。多态是面向对象程序设计的灵活性和可扩展性的基础。
以封装为基础,继承可以实现代码复用,需要注意的是,继承更重要的作用是实现多态。
参考:
实验二Java面向对象程序设计 -
public/package/protected/private
被声明为protected的成员,相同包中的类可以直接存取,不同包中的类可以继承后的子类存取。
- 重新定义方法时,对于父类中的方法权限,只能扩大不能缩小。
教材学习中的问题和解决过程
- 问题一:dome
[ˈdeməʊ] n.演示;示威;样本唱片;民主党员
在软件版本中,DEMO即为演示版
代码调试中的问题和解决过程
- 问题一:P162按照书上打的程序
- 问题一解决方案:回查代码,发现与之相连的role里的getLevel拼错。
-
问题二:如图
-
问题二解决方案
方案一:
方案二:
方案三:
编译不过————原因:Rolee对fight抽象,之后也没有对fight再操作。
解决一:换为role:
解决二:
对Rolee的fight进行操作。
失败
由此引发对 操作抽象类的学习。
参考资料:
Java面向对象之抽象方法&接口;不要在对抽象类接口abstract virtual什么的混淆不清了
性质:1. 含有抽象方法的类必须是抽象类,但是抽象类中可以不包含抽象方法
2. 抽象类必须被继承,抽象类是不能通过new进行实例化操作的,抽象方法必须被重写
3. private和abstract不能同时使用(抽象方法必须被重写,以private修饰则矛盾);
static和abstract不能同时使用(static不用实例化即可调用,abstract必须要被继承,矛盾);
final和abstract不能同时使用(final修饰的类不能被继承,final修饰的方法不能被重写, 矛盾);
下一步操作:
但是奇怪的是,头天晚上百思不得其解的程序出错,第二天早上一醒来就明白是哪里出错了。以下为成功结果:
-
问题三:Ocean出错
-
问题三解决方案:
原因:没有像Human
创建Anemonefish,Shark,Submarine
。
参考学习:深入理解abstract class和interface和5303同学码云上的代码。
解决:分别创建。
- 问题四:
出现红色波浪线
-
问题四解决方案:
-
问题五:Swim右键Delete无法删除
-
问题五解决方案:
结果网上基本上都是误删了怎么办……码一个看起来比较有用的链接恢复IDEA中误删的文件
当点了Delete之后出现了这个
百度翻译之后:Safe delete(with usage search) 安全删除(使用搜索)search in comments and strings 在注释和字符串中搜索search for test occurrences 搜索测试事件
不明觉厉的我顺手取消了最后一排的两个框框,结果……居然……成功删掉了……内心复杂
代码托管
- 代码提交过程及代码量截图:
上周考试错题总结
-
填空:Linux Bash中,(grep )命令可以进行全文搜索。
解析:Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文 本,并把匹配的行打印出来。
详细使用见:linux grep命令 -
填空:System.out.println(“”+52+25);的结果是(5225)
原因:当时敲错导致编译失败 -
填空:两个Integer对象比较大小,可以使用(comareTo())方法。
解析:java.lang.String.compareTo()方法比较两个字符串的字典。比较是基于字符串中的每个字符的Unicode值。此String对象表示的字符序列的参数字符串表示的字符序列进行比较字典.
参考:JavaString.compareTo()方法 -
“30”转化为byte类型的30的语句是(Byte.parseByte(“30”);)。
解析:java.lang.Byte.parseByte(String s)字符串参数解析为有符号十进制字节。字符串中的字符必须为10进制数,除了第一个字符的ASCII减号' - '('\ - ')来表示一个负值或ASCII加号'+'('\ u002B')以指示一个正值。
由此产生的字节,则返回值,完全一样的参数和基数10作为参数parseByte(java.lang.String, int)方法。
参考:Java.lang.Byte.parseByte()方法 -
Java中类的成员变量必须进行初始化,否则会出语法错误。(X)
解析:java 中的变量大致分为 成员变量 和 局部变量 两大类。
类变量属于成员变量
java的类中有两种成员变量
一种就是类变量或静态变量 这类变量前面加油static关键字修饰
这类变量一旦赋值它的值就在你new出来的任何一个实例中具有相同的值另一种叫做实例变量 前面不加static关键字修饰,每一个new出来的新实例都可以对他赋予自己需要的值
参考:ava基础——成员变量、局部变量和静态变量的区别;java 成员变量、局部变量、静态变量 ;Java中类定义中成员变量的两种形式的区域 ;JAVA 类变量和成员变量怎么理解
总结
上周有点赶,所以直接拿着书看敲代码,结果废了时间却没注意到很多东西,本周调整了学习方式。
其他
紧跟《Java学习笔记(第8版)》学习指导学习之后不踏实感少了很多。之前都是以书上为主,时间不够就没看那个链接。我对细枝末节总会很在意,感觉学起来心里没底。
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 16篇 | 400小时 | |
第一周 | 9/9 | 1/1 | 19/19 | 熟练下载安装技能,锻炼解决问题能力 |
第二周 | 185/194 | 1/2 | 16/35 | 下载并熟悉IDEA,练习使用码云、git的技能。 |
第三周 | 488/535 | 1/3 | 18/53 | 花了更少时间磨合软件,学习更顺利 |
第四周 | 366/901 | 2/5 | 18/71 | 继承、多态、行为 |
-
计划学习时间:19小时
-
实际学习时间:18小时
-
改进情况:立的flag被推倒了……(跪)这周工作量增多,晚上学习的时候干扰较大,怀念以前学习时能有整晚整晚的自习……不过一切客观原因都不是原因……归根结底还是自己心静不下来,下周我会加强改进的,也是对自己定力的锻炼。