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就接近了。

参考:软件工程软件的估计为什么这么难软件工程 估计方法

参考资料

20155320 2016-2017-2 《Java程序设计》第的四周学习总结的更多相关文章

  1. 20165318 2017-2018-2 《Java程序设计》第四周学习总结

    20165318 2017-2018-2 <Java程序设计>第四周学习总结 IDEA安装 按照娄老师Intellj IDEA 简易教程,我下载了IDEA但是由于没有注册学校邮箱,我没办法 ...

  2. 20145213《Java程序设计》第四周学习总结

    20145213<Java程序设计>第四周学习总结 教材学习内容总结 本周任务是学习面向对象的继承.接口以及之后的如何活用多态.(还真是路漫漫其修远兮啊!)教材也是延续上周艰深晦涩的语言风 ...

  3. 20145330《Java程序设计》第四周学习总结

    20145330<Java程序设计>第四周学习总结 一周两章新知识的自学与理解真的是很考验和锻炼我们,也对前面几章我们的学习进行了检测,遇到忘记和不懂的知识就再复习前面的,如此巩固也让我对 ...

  4. 20145337《Java程序设计》第四周学习总结

    20145337<Java程序设计>第四周学习总结 教材学习内容总结 继承与多态 继承 继承,避免多个类间重复定义共同行为 符合DRY(Don't Repeat Yourself)原则,多 ...

  5. 20145218 《Java程序设计》第四周学习总结

    20145218 <Java程序设计>第四周学习总结 教材学习内容总结 继承 继承共同行为 继承基本上就是避免多个类间重复定义共同行为. 继承的三个好处:减少代码冗余:维护变得简单:扩展变 ...

  6. 《Java程序设计》第四周学习总结

    20145224-陈颢文 <Java程序设计>第四周学习总结 教材学习内容总结 第六章 继承与多态 ·继承就是面向对象中,子类继承父类,避免重复的行为定义.重复再程序设计上是非常不好的信号 ...

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

    20155304 2016-2017-2 <Java程序设计>第四周学习总结 教材学习内容总结 第六章 继承: 概念: 面向对象中,为避免多个类间重复定义共同行为.(简单说就是将相同的程序 ...

  8. 201521123038 《Java程序设计》 第四周学习总结

    201521123038 <Java程序设计> 第四周学习总结 1. 本周学习总结 1.1 尝试使用思维导图总结有关继承的知识点. 1.2 使用常规方法总结其他上课内容. 1.通过 ins ...

  9. 201521123061 《Java程序设计》第四周学习总结

    201521123061 <Java程序设计>第四周学习总结 1. 本章学习总结 (1)思维导图: --- (2)上课内容总结: 第四周学习了Java中的继承与多态,思维导图中已经给出了本 ...

  10. 20175209 《Java程序设计》第四周学习总结

    20175209 2018-2019-2 <Java程序设计>第四周学习总结 教材知识点总结 1.子类和父类: 子类的继承性:子类与父类在同一包中——子类继承父类中不是private的变量 ...

随机推荐

  1. Aizu 2249 & cf 449B

    Aizu 2249 & cf 449B 1.Aizu - 2249 选的边肯定是最短路上的. 如果一个点有多个入度,取价值最小的. #include<bits/stdc++.h> ...

  2. 9、Node.js Stream(流)

    #########################################################################介绍Node.js Stream(流)Stream 是 ...

  3. 自定义控件(视图)2期笔记11:View的滑动冲突之 概述

    1. 引入: 滑动冲突可以说是日常开发中比较常见的一类问题,也是比较让人头疼的一类问题,尤其是在使用第三方框架的时候,两个原本完美的控件,组合在一起之后,忽然发现整个世界都不好了. 那到底是为什么会产 ...

  4. IntelliJ IDEA Java项目中添加jar包

    1. 事先下载完成需要的javacsv.jar包. java项目在没有导入该jar包之前,显示如下图所示 2. 点击 File ->  Project Structure(快捷键 Ctrl + ...

  5. [HNOI2010]公交线路

    题目 发现\(n\)比较大,但是\(k,p\)都很小,考虑矩乘使得复杂度倾斜一下 发现所有车的最大间隔都是\(p\),还保证\(k<p\),于是我们可以考虑压下最后\(p\)位的情况 于是设\( ...

  6. linq项目中例子实例

    在mvc项目中 var ls = (from i in gt.vendor_login                  join j in gt.vendor on i.vendor_id equa ...

  7. python -- MySQLdb连接mysql数据库

    1. python安装mysql $ pip install mysql-python 2. 数据库连接程序: import MySQLdb # 打开数据库连接db = MySQLdb.connect ...

  8. xmppframework 简介

    XMPPFramework是一个OS X/iOS平台的开源项目,使用Objective-C实现了XMPP协议(RFC-3920),同时还提供了用于读写XML的工具,大大简化了基于XMPP的通信应用的开 ...

  9. HDU 1158(非常好的锻炼DP思维的题目,非常经典)

    题目链接: acm.hdu.edu.cn/showproblem.php?pid=1158 Employment Planning Time Limit: 2000/1000 MS (Java/Oth ...

  10. Eclipse操作Servlet入门案例,创建类无法实现Servlet接口和继承HttpServlet类

    问题描述: 从昨天下午到今天中午,这个问题被缠绕了良久.百度了很多,却都没有一言命中要害. 首先,还是基于对Web的理解. 第一:建立的是Dynamic  Web   Project: 第二:然后需要 ...