20155336 2016-2017-2 《Java程序设计》第四周学习总结
20155336 2016-2017-2 《Java程序设计》第四周学习总结
教材学习内容总结
第六章
- 继承:面向对象中,为避免多个类间重复定义共同行为。(简单说就是将相同的程序代码提升为父类。)
特点:
- 这里接触到了新的关键词,extends,在java语言中用estends来继承父类的行为。
- is-a原则,在java中子类只能继承一个父类。要开始理解多态,必须先知道操作的对象是“哪一种”。
- 多态,使用单一接口操作多种类型的对象。
- 在继承父类之后,定义与父类中相同的方法部署,但执行内容不同,称为重新定义。
- 如果某方法区块真的没有任何程序代码操作,可以直接使用abstract标识该方法为抽象方法,该方法不用撰写{}区块,直接“;”结束即可。
注意:
- 关键字extends是为了扩充和继承父类的行为。
- 在java中一个子类只能继承一个父类。
- 在判断操作对象是“哪一种”的时候,检查语法的逻辑是否正确,方式是从=右边往左边读:右边是不是一种左边呢(右边类是不是左边类的子类)?
- 在重新定义中,子类必须撰写与父类方法相同的签署,如果因为疏忽打错字就会完全不同(虽然编译会成功,但是行为会完全不同),但在JDK5后标注@Override,表示要求编译程序检查是否真的重新定义父类中某个方法。
- 子类如果继承抽象类,对于抽象方法有两种做法,一种是继续标注该方法为abstract(必须在class前标注abstract),另一种就是操作抽象方法,如果都没有实施,则会出现编译错误。
继承与法细节:
特点:
- protected成员权限关键字,相同包中的类可以直接存取,不同包中的类可以在继承后的子类直接存取。(不开放访问权限,但可以直接存取。)
- 如果想要取得父类中的方法定义,可以调用方法前,加上super关键字。
- 在class前使用了final关键字定义,那么表示这个类是最后一个,不会再有子类,也就相当于不能再被继承。在定义方法时候也可以限定为final,表示最后一次定义方法了,也就是子类不可以重新定义final方法。
- 在java继承中一定继承了java.lang.Object,简单来说任何类追溯至最上层类中一定是Object父类。
注意:
- JAVA中有3个权限关键字,public、protected与private,但实际上有4个权限范围。
- 若原来成员public,子类中重新定义时不可谓private或protected。
- 在JDk5之前,重新定义方法时除了可以定义权限较大的关键字之外,其他部分必须与父类中方法签署完全一致。
- 在创建ArrayList实例时候,可以指定内部数组初始容量,如果使用无参数构造函数,则默认容量为16。
垃圾收集:在执行流程中,无法通过变量参考的对象,就是GC(Garbage Collection) 认定的垃圾对象。
抽象类:虽然是抽象方法,但在go()方法中,还是可以调用。
第七章
- 接口:接口相当于另一种“继承”,可任意操作接口内的行为。
特点:
- 接触到了新的关键词interface。这里是针对“定义行为”,在java中可以使用interface关键字进行定义。类要操作接口必须使用implements关键字
- 接口可用于定义行为但不定义操作。
- 行为的多态,判断代码中如同is-a原则相同,“右边是不是拥有左边的行为”或者“右边对象是不是操作了左边的接口”
- 对于解决需求的变化,首先需要编写有弹性、维护性的程序,即增加新的需求,在原有的程序无需修改,只需针对新需求撰写程序。
- 在编写一个好的程序代码的时候需要好的一个架构,各个架构之间可用操作接口来连接,也可以用子类继承父类来连接。
注意:
- 接口的操作与类的继承不同,在java中只能继承一个父类,但是类可以同时继承某个类,同样的可以同时操作某些接口。
- 关键字interface是用来定义操作的,关键字implements是用来类操作关键字的。
- 操作某接口时,有两种方法对接口进行定义,一种是操作接口中定义方法,另一种是再度将该方法标注abstract。
- 在java中,接口可以继承自另一个接口,也就是继承父接口行为。
- 在判断行为的多态的时候,与判断is-a原则相同,从=的右边往左边读进行判断。
接口与法细节:
- 接口的默认,在java中可使用interface来定义抽象行为与外观,在接口中的方法没有操作时,一定得是公开且抽象,public abstract。
- 在接口枚举中,一定要使用=指定值,否则就会编译错误。
- 在JDK5之后可用enum语法来定义枚举常数。
注意
- 类可以操作两个以上的接口,如果两个接口都定义了某方法,如果表示相同的行为,那可以定义一个父接口,因为接口可以继承别的借口,也可以同时继承两个以上的接口,通样也是使用extends关键字。
- 在JDK8之前,要在匿名内部类中存取局部变量,则该局部变量必须是final,否则会发生编译失败。
- 关于enum定义枚举常数时候,实际上enum定义了特殊的类,继承自java.lang.Enum,直接撰写程序继承enum会被编译程序拒绝。因为构造函数权限设定为private,在实际定义的某个类中,才可以将其实例化。
教材学习中的问题和解决过程
- 问题一:不能很好的使用“is-a”原则判断何时可以编译成功何时可以编译失败,但是借助了书上的剑士与魔法师游戏的例子有所了解。比如:
Role role1= new SwordsMan();Role role2 = new Magician();
可以很好的有助于理解“哪一种”原则。 - 问题二:对于3个权限关键字,但是有4个权限范围的知识点,当看了书上的列举的表格和书上给的参照实例,也有所了解。
- 问题三:在构造函数部分,只知道在子类构造函数中没有指定执行某个父类中的构造函数,会默认调用无参构造函数,但是看书后得知先执行子类中的函数,如果想执行父类中某构造函数,可以用
super()
指定。 - 问题四:对于后来的构建框图的时候有一点问题,根源在于类可以操作两个以上的类,但是只能继承一个类。当把握住这一点时候,对于框图思路的搭建就好了许多,加上书上的
Airplane
的例子,首先设计一个Airplane
作为Seaplane
的父类,而Airplane
操作Flyer
的接口,Seaplane
继承Airplane
后操作Swimmer
接口,这样Seaplane
就有了可以飞行或者可以海面滑行的功能了。 - 问题五:在使用
enum
定义枚举常数的时候,不理解在类中才可以实例化的意思。结合书上的Action
的例子,发现enum
实际上是一种继承,但不能直接编译,所以,在类中才可以将其实例化。
代码调试中的问题和解决过程
- 问题:在编辑Game1的时候,对于理解继承存在一点问题。当利用
extands
继承Role
的时候,编辑总是不能通过。前面Role.java明明已经编通过了,所以,我就在疑惑问题出在了哪里,难道是要将这四个代码放到同一个.java中,用同一个public
公开类吗?可我又在疑惑,如果这样子的话,其他三个.java文件的公开类又该如何修改?
- 解决:经过询问同学,知道了父类和即将继承的子类之间的关系,不需要将这几段段代码放到同一个.java文件夹下,只要放到同一个package下就可以继承了。但是编辑不通过,问题又出现在了哪里?
package cc.openhome;
,问题出在了这里!把每个.java中的这行代码删掉,编辑就可以通过了。可是这个包的作用到底是什么,书翻到第二章看了书上的概念,还是不太理解,什么时候用,什么时候不用,希望老师能够讲讲。
代码托管http://git.oschina.net/bestiisjava2017/bestijava20155336huguangyuan
代码提交过程截图:
- 代码量截图:
上周考试错题总结
- 2.填空:~0b1010的十进制值是(-11)
- 4.填空:System.out.println(“”+52+25);的结果是(5225);
- 5.判断: Java中,=与==并没有在基本类型和类类型的不同。(√)
- 8.填空:Java中方法参数只用(传值)调用。
其他(感悟、思考等,可选)
这周的学习,感觉更多是一种延伸。这两周已经很明显可以感觉到学习java的压力了,每周要学习两章的知识。在自习的时候的的确确存在很多问题,越来越觉得java的难度,但是同样的也感受到了java学习的魅力。虽然以前的c语言学习一般,但是通过这四周的java学习,还有自己代码的积累,渐渐的发现虽然敲代码是一件很枯燥无味的工作,但是敲完代码回头看发现这样的敲代码真的可以便于理解书上不懂得问题。就像编程一样,当遇到了问题后需要去尝试解决,去想办法解决问题。在这几周的学习,发现自己的元知识也扎实了不少,软知识也有了很大的提高。也发现这这种自主性学习好像学习完之后会更加有成就感。
学习进度条
老师,我的MD有个问题
每次把老师的进度条模板复制下来后,都会显示的都很乱。。。。。就跟这个图一样~~~课代表也不知道该怎么解决。
| | 代码行数(新增/累积)| 博客量(新增/累积)|学习时间(新增/累积)|重要成长|
| -------- | :----------------:|:----------------:|:---------------: |:-----:|
| 目标 | 5000行 | 30篇 | 400小时 ||
| 第一周 | 200/200 | 2/2 | 20/20 ||
| 第二周 | 300/500 | 2/4 | 18/38 | 学习java的基础语法 |
| 第三周 | 500/1000 | 3/7 | 22/60 |学习java对象及封装 |
| 第四周 | 300/1300 | 2/9 | 30/90 | 学习了继承与多态的关系,以及接口的多态操 |
计划学习时间:21小时
实际学习时间:16小时
改进情况:
参考资料
20155336 2016-2017-2 《Java程序设计》第四周学习总结的更多相关文章
- Java程序设计第四周学习总结
1. 本周学习总结 1.1 尝试使用思维导图总结有关继承的知识点. 1.2 使用常规方法总结其他上课内容. 答:①String类是final类,不能定义String的子类. ② instanceof ...
- 对于“2017面向对象程序设计(JAVA)第四周学习总结”存在问题的反馈
对于“2017面向对象程序设计(JAVA)第四周学习总结”存在问题的反馈 “这部分同学博文总结没有写,实验作业没有提交.”——1.关于博文作业.实验作业教学功能的正解:学习知识.暴露问题.衔接课上.2 ...
- 杨其菊201771010134《面向对象程序设计(java)》第四周学习总结
<面向对象程序设计(java)> 第四周学习总结 第一部分:理论知识 1.类与对象 a.类(class)是构造对象的模板或蓝图.由类构造对象的过程称为创建类的实例: java中类声明的格式 ...
- 201871010106-丁宣元 《面向对象程序设计(java)》第四周学习总结
201871010106-丁宣元 <面向对象程序设计(java)>第四周学习总结 正文开头 项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-da ...
- 20155318 2016-2017-2 《Java程序设计》第九学习总结
20155318 2016-2017-2 <Java程序设计>第九学习总结 教材学习内容总结 学习目标 了解JDBC架构 掌握JDBC架构 掌握反射与ClassLoader 了解自定义泛型 ...
- 《Java程序设计》第二学习总结
<Java程序设计>第二学习总结 教材学习内容总结 类型 byte(字节) shot(短整型) int(整型) long(长整型) float(浮点型) double(双精度) char( ...
- 20145304 刘钦令 Java程序设计第二周学习总结
20145304 <Java程序设计>第2周学习总结 教材学习内容总结 java可区分基本类型和类类型(即参考类型)两大类型系统. 基本类型主要可区分为整数.字节.浮点数.字符与布尔. 整 ...
- 20145304 刘钦令 Java程序设计第一周学习总结
20145304<Java程序设计>第1周学习总结 教材学习内容总结 1995年5月23日,是公认的Java的诞生日,Java正式由Oak改名为Java. Java的三大平台是:Java ...
- 20145120黄玄曦 《java程序设计》 寒假学习总结
1和2.我对未来规划不多,我认为好好学习积累知识能帮助我应对未来的挑战,这是我的学习动力之一,此外,了解新知识满足好奇心也是我的主要的学习动力. 3.我认为专业课学习比公务员考试重要,我认为专业知识是 ...
- 201621123007 Java程序设计第一周 学习总结
第一周-Java基本概念 201621123007 <Java程序设计> 第一周学习总结 1. 本周学习总结 java是面向对象的一类语言,三大特征:封装性,继承性,多态性. jdk jr ...
随机推荐
- struts2中两个action之间的跳转(struts.xml)
1. action的配置中,有一个为"redirectAction”(重定向到一个Action)和chain(就是所谓的action请求链)的action类型顺便说一下struts2的act ...
- Django template for 循环用法
当列表为空或者非空时执行不同操作: {% for item in list %} ... {% empty %} ... {% endfor %} 使用forloop.counter访问循环的次数,下 ...
- adb命令篇 (转载)
转自:https://www.cnblogs.com/ailiailan/p/7896534.html 1.抓log方法 (bat文件) mkdir D:\logcat set /p miaosh ...
- 6、Spring Cloud -熔断器Hystrix
6.1.什么是Hystrix 在分布式系统中.服务与服务之间的依赖错综复杂,一种不可避免的情况就是某些服务 出现故障,导致依赖于它们的其他服务出现远程调度的线程阻塞. Hystrix是Netfli ...
- 搭建Hexo博客系统
也许这个教程部署不是特别详细,因为我主要是参考这个链接:https://blog.csdn.net/weixin_39879178/article/details/80319392 感觉这里已经写的很 ...
- VSCode调试C++
在ubuntu下调试C++ 本人觉得VSCode比较好用. 步骤如下: 1. 编写.cpp,.h文件 自行完成自己的程序. 2. 编写CMakeLists.txt.下面是一个比较好用的模板. 根目录为 ...
- windows7系统PC机耳机没有声音
排除耳机故障和主机耳机孔等硬件问题之后 可能情况: 1.进行音量设置 2.更新声卡驱动 (使用驱动程序进行检测并进行更新) 360驱动大师 驱动精灵 3.windwows相关设置存在问题 (1)打开控 ...
- Java类加载机制与Tomcat类加载器架构
Java类加载机制 类加载器 虚拟机设计团队把类加载阶段中的“通过一个类的全限定名来获取描述此类的二进制字节流”这个动作放到Java虚拟机外部去实现,以便让应用程序自己决定如何去获取所需要的类.实现这 ...
- djb2:一个产生简单的随机分布的哈希函数
目录 LCG算法 示例代码 djb2 示例代码 为什么选择参数33和 33 was chosen because: 5381 was chosen because 哈希选择参考 LCG算法 djb2与 ...
- 基于oracle数据库存储过程的创建及调用
1.PLSQL编程 1.1概念和目的 PL/SQL(Procedure Language/SQL) PLSQL是Oracle对sql语言的过程化扩展 指在SQL命令语言中增加了过程处理语句(如分支.循 ...