20155320 2016-2017-2 《Java程序设计》第的四周学习总结
20155320 2016-2017-2 《Java程序设计》第的四周学习总结
教材学习内容总结
继承与多态
- 继承就是子承父类,避免重复定义共同行为,会使用
extends关键词,表示会扩展其原来没有的行为。
相关继承的代码
运行结果为:

- 子类只能继承一个父类,子类与父类间会有is-a(是一种)关系。但是需注意程序编译时是从右往左读的。所以一下这种情况无法通过编译。
Role role1=new SwordsMan();
SwordsMan swordsMan=role1;//Role不一定是SwordsMan类
需要将代码改为如下以通过编译,但这在执行时期可能会出错,需仔细考虑:
Role role1=new SwordsMan();
SwordsMan swordsMan=(SwordsMan)role1;
-多态即指使用单一接口操作多种类型的对象,多态具有更高的可维护性
多态程序showblood
运行结果为:

- 重新定义即为在继承父类后,在子类中定义与父类中相同的方法部署,但执行内容不同。
重新定义的应用程序
运行结果为:

- 类中若有方法没有操作,就需标示为
abstract,且在class前也一定要标abstract,表示这个类定义不完整 - 子类继承标示有abstract的类1.继续标示该方法为abstract,则class前也一定要标2.操作抽象方法
- 声明为
protect的成员,相同包中的类可以直接存取,不同包中的类可以在继承后直接存取。 - 如果子类想获取父类中的方法定义,可以在调用方法前,加上
super,这种方法不能被定义为private,重新定义方法,对于父类中的方法权限,只能扩大不能缩小。
相关范例程序
运行结果为:

- 重新定义方法时可将方法类型定义为父类中的子类。
- 在创建子类实例后会先执行父类定义的初始流程,再执行子类定义的初始流程,若干子类构造函数中没有指定执行父类的哪个构造函数则会默认调用父类中无参数构造函数。
- 若干想执行父类中的构造函数,可使用super()指定。
- class前加上
final关键字,那么表示这是最后一个类了,不会再有子类;方法若被定义为final,则子类不能重新定义方法。 java.lang.object是所有类的顶层父类,object上定义的方法,所有对象都继承下来,只要不是被定义为final的方法,均可重新定义。
object的运用instanceof运算符可以用来判断对象是否由某个类创建,左操作为对象右操作是类。
接口与多态
- 定义行为在可以使用
interface关键字。 - 类要操作接口,必须使用
implements关键字;操作接口时对接口中定义的方法有两种处理方式1.操作接口中定义的方法2.在读将该方法表示为abstract。
关于游泳乐园的代码
运行结果为:

- 操作接口表示拥有行为,但不会有是一种关系。
- 有弹性、可维护性的程序就是增加新的需求,原有的程序无须修改,只需针对新需求撰写程序。
- 类可以操作两种以上的类,即具有两种以上的行为。
操作两种以上类的程序oceanworld
运行结果为:
- Java中,接口可以继承自另一个接口,即继承父接口行为,且在子接口中额外定义行为。
接口继承范例Ship
运行结果为:

- 接口中的方法没有操作时,一定得是公开且抽象,但是可以省略
public abstract,其默认定义即为这样。 - 在interface中,只能定义
public static final的枚举常数,若省略,则会默认补充,且必须使用=指定值,否则会编译错误。 - 接口可以继承别的接口,也可以同时继承两个以上的接口,同时会继承父接口的操作。
- 匿名内部类的语法为:
new 父类()|接口(){
//类本体操作
}
- JDK8以前,如果要在匿名内部类中存取局部变量,则该局部变量必须是final。
- 可以使用
enum语法来定义枚举常数,public enum Action定义的Action实际上是个类,而enum中列举的常数实际上为Action实例,由于构造函数为private,只有Action类中才可以实例化,因此可以传入的只有在Acion类中定义的实例。
enum枚举实例Game
运行结果为:

教材学习中的问题和解决过程
- 在学习第六章时,我发现了教材程序的错误,我按教材范例来练习程序Guest,我发现按教材上的程序来,得到的结果如下,与所需结果不符:
教材程序Guest

- 后我通过单步调试发现原因出在如下循环的位置:

- names.add()的执行应该在循环内,这样每次录入的名字才能加入数组,而不是只有最后一个quit,将循环处的程序改为如下,即可得到所需输出:
正确修改后的程序GuestJDB


代码调试中的问题和解决过程
- 在编写与接口有关的代码oceanword时,我由于想偷懒,在继承后的子类中少写了执行父类构造函数的这部分代码:
public Flyingfish(String name){
super(name);
}
结果出现了如下错误提示:

- 这是因为若子类构造函数中没有指定执行父类父类中的哪个构造函数,则会默认执行父类中的无参数构造函数,但是父类中没有无参数构造函数,则必须指定执行哪个构造函数,否则就是调用不存在的构造函数了。补充上以上代码后,则运行结果正确了。
代码托管
- 代码提交过程截图:

代码量截图:

上周考试错题总结
- 题1,Linux Bash中,(grep)命令可以进行全文搜索
- 题5,System.out.println(52+25+””);的结果是(77);java中可以通过‘+’来连接字符串,但是+要在字符串前,才表示连接的是字符串。
- 题18, p109 Average.java,求1,2,3,4,5的平均值的命令是(java cc.openhome.Average 1 2 3 4 5);这是因为在启动JVM并指定执行类时,可以一并指定命令行自变量
- 题25,判断:public void someMethod(int i)和public int someMethod()是方法重载。(OK);返回值类型不可作为方法重载依据,所以public void someMethod()和public int someMethod会被视为同一个定义,方法重载可根据传递自变量类型不同和参数列个数不同来设计方法重载。
其他(感悟、思考等,可选)
本周主要学习了继承、接口和多态的问题,感觉上和c语言的函数还是差别很明显的,语法比较繁杂,但是通过本周和上周的学习,已经能能够自己独立的编写一些程序了,尤其本周书本上的代码大都不能直接用,通过这两周的学习,衔接改写代码已经基本没有太大问题了,但是在一些复制程序的理解和编写上还需继续努力。
学习进度条
| 代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
|---|---|---|---|---|
| 目标 | 5000行 | 30篇 | 400小时 | |
| 第一周 | 20/20 | 1/4 | 20/20 | 安装了JDK及IDEA |
| 第二周 | 144/164 | 1/5 | 18/38 | 学习了java语言的基本语法 |
| 第三周 | 447/567 | 1/6 | 20/ 58 | 掌握了一些有关对象和封装的内容 |
| 第四周 | 875/ 1442 | 1/7 | 23/81 | 学习了解了继承、接口和多态的相关问题 |
尝试一下记录「计划学习时间」和「实际学习时间」,到期末看看能不能改进自己的计划能力。这个工作学习中很重要,也很有用。
耗时估计的公式
:Y=X+X/N ,Y=X-X/N,训练次数多了,X、Y就接近了。
计划学习时间:25小时
实际学习时间:23小时
改进情况:随着本周学习java语法的渐渐复杂,我大部分的学习时间都用在了编程实际操作上面,感觉这样对知识的掌握更加牢固。
参考资料
20155320 2016-2017-2 《Java程序设计》第的四周学习总结的更多相关文章
- 20165318 2017-2018-2 《Java程序设计》第四周学习总结
20165318 2017-2018-2 <Java程序设计>第四周学习总结 IDEA安装 按照娄老师Intellj IDEA 简易教程,我下载了IDEA但是由于没有注册学校邮箱,我没办法 ...
- 20145213《Java程序设计》第四周学习总结
20145213<Java程序设计>第四周学习总结 教材学习内容总结 本周任务是学习面向对象的继承.接口以及之后的如何活用多态.(还真是路漫漫其修远兮啊!)教材也是延续上周艰深晦涩的语言风 ...
- 20145330《Java程序设计》第四周学习总结
20145330<Java程序设计>第四周学习总结 一周两章新知识的自学与理解真的是很考验和锻炼我们,也对前面几章我们的学习进行了检测,遇到忘记和不懂的知识就再复习前面的,如此巩固也让我对 ...
- 20145337《Java程序设计》第四周学习总结
20145337<Java程序设计>第四周学习总结 教材学习内容总结 继承与多态 继承 继承,避免多个类间重复定义共同行为 符合DRY(Don't Repeat Yourself)原则,多 ...
- 20145218 《Java程序设计》第四周学习总结
20145218 <Java程序设计>第四周学习总结 教材学习内容总结 继承 继承共同行为 继承基本上就是避免多个类间重复定义共同行为. 继承的三个好处:减少代码冗余:维护变得简单:扩展变 ...
- 《Java程序设计》第四周学习总结
20145224-陈颢文 <Java程序设计>第四周学习总结 教材学习内容总结 第六章 继承与多态 ·继承就是面向对象中,子类继承父类,避免重复的行为定义.重复再程序设计上是非常不好的信号 ...
- 20155304 2016-2017-2 《Java程序设计》第四周学习总结
20155304 2016-2017-2 <Java程序设计>第四周学习总结 教材学习内容总结 第六章 继承: 概念: 面向对象中,为避免多个类间重复定义共同行为.(简单说就是将相同的程序 ...
- 201521123038 《Java程序设计》 第四周学习总结
201521123038 <Java程序设计> 第四周学习总结 1. 本周学习总结 1.1 尝试使用思维导图总结有关继承的知识点. 1.2 使用常规方法总结其他上课内容. 1.通过 ins ...
- 201521123061 《Java程序设计》第四周学习总结
201521123061 <Java程序设计>第四周学习总结 1. 本章学习总结 (1)思维导图: --- (2)上课内容总结: 第四周学习了Java中的继承与多态,思维导图中已经给出了本 ...
- 20175209 《Java程序设计》第四周学习总结
20175209 2018-2019-2 <Java程序设计>第四周学习总结 教材知识点总结 1.子类和父类: 子类的继承性:子类与父类在同一包中——子类继承父类中不是private的变量 ...
随机推荐
- Spring Boot 的配置文件
Profile 配置 Profile 是 Spring 用来针对不同的环境对不同的配置提供支持的,全局的 Profile 配置使用 application-{profile}.properties ( ...
- VM安装CentOs7虚拟机后无法上网之解决方法
最近在研究DC/OS的安装,读了很多安装方法后决定先从docker的安装入手,由于DC/OS的安装必须在CentOs7版本以上,所以就在VM下安装了CentOs7,殊不知安装后并不能上网,于是乎又转到 ...
- Linux磁盘管理.md
df df 即“可用磁盘”disk free,用于显示文件系统的磁盘使用情况.默认情况下 df 命令将以每块 1K 的单位进行显示所有当前已挂载的文件系统,如果你想以人类易读的格式显示 df 命令的输 ...
- python不用正则过渡括号
- DateConvertUtil 日期工具类
package com.hxqc.basic.dependency.util; import java.text.DateFormat; import java.text.ParseException ...
- [SDOI2016]数字配对
题目 发现要求配对的条件是这样 \[a_j|a_i,\frac{a_i}{a_j}=p_1\] 我们考虑一下再来一个\(a_k\),满足 \[a_k|a_j,\frac{a_j}{a_k}=p_2\] ...
- Kali-linux使用SET实施攻击
前面介绍了社会工程学工具包(SET)的简单使用.为了能帮助用户更容易的理解社会工程学的强大功能.本节将介绍使用社会工程学工具包实施各种攻击. 7.4.1 针对性钓鱼攻击向量 针对性钓鱼攻击向量通过构造 ...
- vlc源码分析(五) 流媒体的音视频同步
vlc播放流媒体时实现音视频同步,简单来说就是发送方发送的RTP包带有时间戳,接收方根据此时间戳不断校正本地时钟,播放音视频时根据本地时钟进行同步播放.首先了解两个概念:stream clock和sy ...
- 字符型设备驱动程序-first-printf以及点亮LED灯(一)
学习使用 Linux 的 字符型设备驱动 来 进行 . 学习地址:http://edu.51cto.com/lesson/id-25710.html 第一步: 首先写 三个函数 ,2017年5月17 ...
- GraphQuery - Powerful html/xml query language
GraphQuery GraphQuery is a query language and execution engine tied to any backend service. It is ba ...