20155306 2006-2007-2 《Java程序设计》第4周学习总结
20155306 2006-2007-2 《Java程序设计》第4周学习总结
教材学习内容总结
第六章 继承与多态
6.1 何谓继承
继承:面向对象中,为避免多个类间重复定义共同行为。
- 运用extends关键字的子类会继承扩充父类行为
- 要修改子类中继承父类的名称,只需修改父类就好,只要是继承父类的子类都无法修改
- private成员可以继承,不过子类无法直接存取,必须通过父类提供的方法来存取
相关练习Game1继承
运行截图:
多态:使用单一借口操作多种类型的对象
- 子类只能继承一个父类,子类与父类间有is-a关系
- 检查多态的语法正确:比如 Role role = new SwordsMan();:从=右向左读,右边类应该是左边类的子类
相关练习Game2多态
运行截图:
重新定义行为:接口操作相同,只是操作内容不同的两个方法提升至父类中进行定义
- 父类中定义了方法,实际上如何执行只有子类知道,父类里的方法内容是空的,子类继承父类,再对方法进行定义
- 重新定义子类中某个方法时,子类必须撰写与父类方法中相同的签署
@Override用于检验是不是重新定义了父类中的某个方法
相关练习Game3重新定义
运行截图:
抽象方法:用abstract
表示该方法为抽象方法,不用撰写{}区块,直接用“;”结束即可
- 子类继承抽象类,一种在该子类class前标示
abstract
,一种是操作抽象方法。
相关练习 Game4抽象
运行截图:
6.2 继承语法细节
- Java中所有对象都是一种java.lang.object等细节
- 被声明为protected的成员在相同包的类可以直接存取,不同包的类可以在继承后的子类直接存取
利用toString()方法返回字符串描述
public:类内部可存取,相同包类可存取,不同包类可存取
protected:类内部可存取,相同包类可存取,子类可存取
无:类内部可存取,相同包类可存取,不同包类不可存取private:类内部可存取,相同包类不可存取,不同包类不可存取
super关键字:想取得父类中的方法定义,可以在调用方法前加上
- 可以使用super调用父类方法,不能定义为private(这就只限定在类内使用)
- 重新定义方法,子类对于父类中的方法权限,只能扩大不能缩小
- static方法没有多态
- super()和this()只能择一调用,而且要在构造函数第一行
相关练习:Game6 super
运行截图:
- class前使用final关键字定义,表示这个类是最后一个了,不会再有子类,不能被继承
- 方法也可以被限定为final,表示最后一次定义方法,子类不可以再重新定义该方法
- java中任何类追溯至最上层父类,定义时没有使用继承,一定就是java.lang.Object,所有对象一定是一种Object,任何类型的对象,都可以使用Object的名称来参考
相关练习Guest
运行截图:
- 没有重新定义equals,使用时方法等同于==
- instanceof用来判断对象是否由某个类创建,左操作数是对象,右操作数是类
- 左操作数类型是右操作数类型的子类型也返回true)
垃圾收集
程序流程中已经无法使用的某个对象,无法通过变量参考的对象就成为了垃圾对象。
go()方法,猜数练习Guess
运行截图:
第七章 接口与多态
7.1 何为接口
- 类要操作接口,必须使用implements关键字。操作某接口时,对接口中定义的方法有两种处理方式,一是操作接口中定义的方法,二是再度将该方法标示为abstract。
相关练习Ocean1
运行截图:
相关练习Game枚举
运行截图:
- 类可以操作两个以上的类,拥有两种以上的行为
- 类可以同时继承某个类并操作某些接口
7.2 接口语法细节
- Java中,可用interface来定义抽象的行为与外观
- 接口中无方法操作时,一定是公开且抽象的
- 在interface中,可以定义常数,称为枚举常数。在接口定义常数时,一定要使用=指定值
- 若在类中定义枚举常数时,一定要明确写出
public static linal
接口也可以继承别的接口,也可以同时集成两个以上的接口,同样是使用
extends
临时继承某个类或操作某个接口并建立实例,子类和接口只使用一次,不需要为他们定义名称,这时使用匿名内部类,语法为:
new 父类()|接口(){//类文本操作}
Game枚举enum语法用于定义枚举常数,enum定义了特殊的类,继承java.lang.Enum
教材学习中的问题和解决过程
- 问题一:重新定义与新定义有什么区别? 解答:通过再一次看书和查阅百度,我发现:新定义则是一种合法的方法定义,定义一种新方法,对之前的方法没有任何影响。重新定义则是子类对父类某个方法的修改。注:在子类某个方法前标示@override,若编译错误,则没有重新定义。
代码调试中的问题和解决过程
问题一:最近不知道为什么代码托管不了,总是出现如下图这样的错误提示:
解决:通过问同学,还翻看以前的托管教程,发现出现错误的主要原因是github中的README.md文件不在本地代码目录中,通过教程提示,输入通过如下命令进行代码合并
git pull--rebase origin master
成功解决!问题二:在编译程序时出现问题,提示“无法再静态上下文中引用非静态变量”
解决:内部类是动态的,也就是开头以public class开头。而主程序是public static class main。在Java中,类中的静态方法不能直接调用动态方法。只有将某个内部类修饰为静态类,然后才能够在静态类中调用该类的成员变量与成员方法。 所以在内部类中加static。慢慢发现,这个错误真的很常见,基本每次调试都会出现。
问题三:错误提示说:作用域中没有该类型的封闭实例
解决:经过百度,解释如下:创建内部类对象之前,要先创建其外部类对象。(将内部类声明为静态也可,道理相同),不是特别清楚道理在哪里,但是经过修声名,编译通过,进而出正确结果。
问题四:如下图显示,编译通过,可不知为什么会出现乱码?
解决:未解决
问题五:出现下图错误提示:方法不会覆盖或出现超类型的方法
解决:去掉这两个方法中的@Override ,因为这两个方法是抽象父类的接口,可以不用@Overrride注解 。
总结:在抽象类的子类中,实现的方法可以不加@Override ,如果有莫名的报错,去掉这个注解看看吧!!
代码托管
- 代码提交过程截图:
- 运行 git log --pretty=format:"%h - %an, %cd : %s" 并截图
- 运行 git log --pretty=format:"%h - %an, %cd : %s" 并截图
- 代码量截图:
- 运行 find src -name "*.java" | xargs cat | grep -v ^$ | wc -l 并截图
- 运行 find src -name "*.java" | xargs cat | grep -v ^$ | wc -l 并截图
上周考试错题总结
- 填空:Linux Bash中,(grep )命令可以进行全文搜索
- 填空:System.out.println(“”+52+25);的结果是(5225)
- 填空:System.out.println(52+25+””);的结果是(77)
- p86 Guess.java中guess的值无法输入12。(X)
- Java中,=与==并没有在基本类型和类类型的不同。(OK)
- “30”转化为byte类型的30的语句是(Byte.parseByte(“30”);)
- Java中类的成员变量必须进行初始化,否则会出语法错误。(X)
- 填空:Java中方法参数只用(传值)调用
其他(感悟、思考等,可选)
这周的学习内容与上周一样都是两章,但感觉这周相对更轻松一点,一方面应该有了心里建设,一方面这周也吸取着上周的经验教训。这周感觉学到了很多真正编代码用到的知识,需要不断地尝试和多多联系,才能较好的掌握。
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第一周 | 20/20 | 1/2 | 15/15 | 完成JDK、IDEA下载,并且可以简单操作 |
第二周 | 150/170 | 1/2 | 18/33 | 开始可以撰写简单的代码,了解了一些常用的语法 |
第三周 | 327/677 | 1/2 | 26/59 | 更深入认识类与对象,以及对象的封装,时间紧,任务重,需敲大量代码来熟练 |
第四周 | 1353/1830 | 1/2 | 25/84 | 通过学习继承和多态,感觉自己掌握了很多java的语法,代码量越来越重要 |
尝试一下记录「计划学习时间」和「实际学习时间」,到期末看看能不能改进自己的计划能力。这个工作学习中很重要,也很有用。
耗时估计的公式
:Y=X+X/N ,Y=X-X/N,训练次数多了,X、Y就接近了。
计划学习时间:25小时
实际学习时间:25小时
改进情况:相比上次,开始大量的敲代码,自己努力去编代码,虽然有点难,但是感觉有收获!
参考资料
20155306 2006-2007-2 《Java程序设计》第4周学习总结的更多相关文章
- 20155306 2016-2017-2 《Java程序设计》第九周学习总结
20155306 2016-2017-2 <Java程序设计>第九周学习总结 教材学习内容总结 第十六章 整合数据库 16.1 JDBC入门 Java语言访问数据库的一种规范,是一套API ...
- 20155236 2016-2017-2 《Java程序设计》第九周学习总结
20155236 2016-2017-2 <Java程序设计>第九周学习总结 教材学习内容总结 JDBC入门 1.JDBC简介 JDBC是用于执行SQL的解决方案,开发人员使用JDBC的标 ...
- 20155313 2016-2017-2 《Java程序设计》第一周学习总结
20155313 2016-2017-2 <Java程序设计>第一周学习总结 教材学习内容总结 本周的Java学习进入了一个全新的阶段,对于我这样的并没有每天花费时间钻研的同学来说,最后几 ...
- 20155331 2016-2017-2 《Java程序设计》第九周学习总结
20155331 2016-2017-2 <Java程序设计>第九周学习总结 教材学习内容总结 JDBC是什么? JDBC代表Java数据库连接,这对Java编程语言和广泛的数据库之间独立 ...
- 20145231 《Java程序设计》第一周学习总结
20145231 <Java程序设计>第一周学习总结 教材学习内容总结 Java三大平台Java SE,Java EE,Java ME.其中,Java SE是我们学习的基础. Java S ...
- 20145238-荆玉茗 《Java程序设计》第一周学习总结
20145238 <Java程序设计>第一周学习总结 教材学习内容总结 Java三大平台:由于java领域的应用越来越广,根据不同级别的应用开发区分了不同的应用版本,后正式更名为Java ...
- 20145213《Java程序设计》第九周学习总结
20145213<Java程序设计>第九周学习总结 教材学习总结 "五一"假期过得太快,就像龙卷风.没有一点点防备,就与Java博客撞个满怀.在这个普天同庆的节日里,根 ...
- 20145213《Java程序设计》第二周学习总结
20145213<Java程序设计>第二周学习总结 教材学习内容总结 本周娄老师给的任务是学习教材的第三章--基础语法.其实我觉得还蛮轻松的,因为在翻开厚重的书本,一股熟悉的气息扑面而来, ...
- 20145213《Java程序设计》第一周学习总结
20145213<Java程序设计>第一周学习总结 教材学习内容总结 期待了一个寒假,终于见识到了神秘的娄老师和他的Java课.虽说算不上金风玉露一相逢,没有胜却人间无数也是情理之中,但娄 ...
- 21045308刘昊阳 《Java程序设计》第九周学习总结
21045308刘昊阳 <Java程序设计>第九周学习总结 教材学习内容总结 第16章 整合数据库 16.1 JDBC入门 16.1.1 JDBC简介 数据库本身是个独立运行的应用程序 撰 ...
随机推荐
- HDU 1542 矩形面积并
推荐阅读这篇文章 这里仅根据上述文章进行一些补充.主要是注意这里线段树点的意义变成了“边”.比如+-----+-----+,看作3个点abc和两条边e1和e2,那么线段树中点a代表e1,点b代表e2. ...
- Fiori Fundamentals和SAP UI5 Web Components
这周有位同事邀请我给团队讲一讲SAP技术的演进历史,所以我准备了下面几个主题来介绍. 其中SAP的技术回顾和演进,我的思路就是从前后台两方面分别介绍. 我画了一张非常简单的图: 去年5月我写过一篇文章 ...
- 怎么在Linux环境下通过VS Code调试Python 3+?
今天突然想写一写Python了,于是就开始弄.使用源码包安装好Python3.6.6之后,发现Linux下只能通过python3来调用python 3.6.6.如果直接使用python的话,调用的是系 ...
- [USACO11JAN]Roads and Planes
嘟嘟嘟 这道题他会卡spfa,不过据说加SLF优化后能过,但还是讲讲正解吧. 题中有很关键的一句,就是无向边都是正的,只有单向边可能会有负的.当把整个图缩点后,有向边只会连接在每一个联通块之间(因为图 ...
- ps基础练习
1. 直接把图片拖进来 2. F 键 视窗全屏快捷键 3. 此时的图片是“背景”层,不能直接编辑,双击该背景层,就变成了“图层”,就可以编辑了 4. 5. 6. 7. 魔棒工具,在需要去掉的点一下, ...
- [转载]WebDriver工作原理
转载自:https://www.cnblogs.com/testermark/p/3546287.html WebDriver的工作原理: 在我们new一个WebDriver的过程中,Seleniu ...
- Reading Software Defined Traffic Measurement with OpenSketch
NSDI '13 概要 OpenSketch是一个通用的.抽象的测量框架, 与SDN 网络架构类似, OpenSketch 提出将测量控制层和数据层解耦. 数据层运行设为可动态配置的3阶段流水线, 首 ...
- C#中参数传递
当调用带有参数的方法,需要向方法传递参数,有三种向方法传递参数的方式. 1.值参数:这种方式复制参数的实际值给形式参数,形参和实参使用的是内存中两个不相同的值,形参发生改变不会影响实参的值,从而保证了 ...
- 初始化mysql数据库 /usr/bin/mysql_install_db执行时报错
错误描述: FATAL ERROR: please install the following Perl modules before executing /usr/bin/mysql_install ...
- java.lang.IllegalStateException: Failed to load property source from location 'classpath:/application.yml'
java.lang.IllegalStateException: Failed to load property source from location 'classpath:/applicatio ...