教材学习内容总结

理解封装、继承、多态的关系

封装:使用类方法或函数将程序进行封装,并定义其内部的成员以及数据。

继承:子类继承父类,避免重复的行为定义。

多态:子类只能继承一个父类,即其中存在is-a关系,父类可由多个子类继承。

三者关系:对程序在父类中进行封装,由多个对应的子类继承父类中的部分封装的程序,以避免程序步骤的重复,但一个子类只能继承一个父类。

理解抽象类与接口的区别

抽象类:即可定义没有撰写任何程序代码的方法区块的类。可以使用abstract标示该方法为抽象方法,并且abstract标明在class之前。子类可通过标示abstract或操作该抽象方法来继承抽象类。

接口:操作接口,必须使用implements关键字。由于一个子类只能继承一个父类,而程序在继承了一个父类的前提下,可通过接口连接其他的继承了另一个父类的程序,从而间接地“继承”了两个父类,使得程序之间的调用变得更加灵活。

了解模式和设计模式

模式指的是一组程序代码,其中有子类、父类、接口等,把他们按要求编写并构架在一起,形成模式。

设计模式便是按照一定的要求开始编写和构架模式。其中注意程序的封装性,并运用逻辑把复杂的代码独立成一个一个简单的简短的代码,熟练运用继承和接口,将多个程序有序地、按照相关逻辑串联起来。这样既可以避免代码的重复,又可以使整个程序变的更容易变更和添加新的程序段。

了解垃圾回收机制

执行流程中,无法通过变量参考的对象,就是GC认定的垃圾对象。GC收集到的垃圾对象所占的内存空间,会被垃圾收集器释放。

如:

Some some1=new Some();
Some some2=new Some();
Some some1=some2;

原先some1的对象不再被参考,因此成为内存中的垃圾。

掌握Object类

子类继承父类时,如果定义类没有使用extends关键字指定继承类,那一定是继承java.lang.Object

关键字java.lang.Object是java中任何类的最上层父类。另外,Object还可以重新定义ArrayListtoStringequals等类型,以便在后续的编程中直接使用。

掌握enum

enum主要用于定义枚举常数,编译后悔产生Action.class文件,可以为编程带来很大的方便,并且使程序变得更精简、更易懂。

教材学习中的问题和解决过程

  • xx1问题

    对于S.O.L.I.D原则不了解。

  • xx1解决方案

    通过上网查阅相关资料得:

    单一职责原则(SRP)

    把整个问题分成小部分,并且每个小部分都将通过一个单独的类负责。

    开放封闭原则(OCP)

    创建一个类并且应用程序的其他部分开始使用它,不能再对其进行修改。

    里氏替换原则(LSP)

    派生的子类在一定程度上可以替换父类,任何父类出现的地方,子类一定可以出现。

    接口隔离原则(ISP)

    一个接口,应该尽可能拥有少的行为,它是精简的,也是单一的。

    依赖倒置原则(DIP)

    高层的模块不应该依赖低层的模块,他们应该依赖抽象类或接口。

    总结:SOLID原则中,继承和多态相当重要,SOLID原则能使程序变得更有弹性,更易维护。

  • xx2问题

    对于覆盖方法的概念不够明确。

  • xx2解决方案

    java多态的两种表现形式为方法重载和方法覆盖。方法覆盖指子类重新实现了父类中的方法。

    但其中也存在相关的约束条件:

  • xx1子类的方法名称、参数列表、返回值类型必须与父类中的一致。

  • xx2子类方法不能缩小父类方法的访问权限,但可以扩大。

  • xx3子类方法不能抛出比父类方法更多的异常,可以不抛出异常。

如以下代码:

public class Override{
}
class Exception1 extends Exception{}
class Exception2 extends Exception1{}
class Exception3 extends Exception2{}
class Parent{
void method() throws Exception2{}
}
class Son extends Parent{
//private void method(){}//错误,缩小了父类方法的访问权限
//int method(){} //错误,方法返回值与父类方法不一致
void method(int k){} //通过编译,但不与父类的方法method()构成覆盖
//public void method() throws Exception1{}//错误 抛出比父类更多的异常
//public void method(){} //正确 扩大父类方法的访问权限,不抛出异常
//void method() throws Exception3{}; //正确 抛出的异常比父类抛出的异常小
public void method() throws Exception3{}
}

代码调试中的问题和解决过程

  • xx1问题

    在编译Game1这一组程序模式时,Game1 RPG无法输出,缺少Role对象。

  • xx1解决方案

    将这一组代码的java文件放入同一文件夹中,将每个代码段编译一次,再编译和运行Game1 RPG,即可解决。

  • xx2问题

    Inheritance Guest.java通过编译但运行不成功。

  • xx2解决方案

    尚未解决。

代码托管

  • 代码提交过程截图:

  • 代码量截图:

上周考试错题总结

  • 1、Linux Bash中,grep命令可以进行全文搜索。
  • 2、System.out.println(52+25+"");结果为77。
  • 3、"30"转化为byte类型的30的语句是```Byte.parseByte("30");。
  • 4、java中类的成员方法中引用成员变量,要使用this关键字。

其他(感悟、思考等,可选)

  • xx1、对于一个程序,如果增加新的需求,原有的程序无须修改,只需要针对需求撰写的程序,那就是有弹性、具可维护性的程序。
  • xx2、java的设计模式思路是将大事化小,再把小事一件一件地解决,最后再以特定的方式串联起来,这样既保证了思路的清晰有条理,又可在其基础上解决和完善一个个新的问题。

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 30篇 400小时
第一周 6/6 1/4 20/20
第二周 334/340 1/5 18/38
第三周 570/900 1/6 22/60
第四周 544/1358 1/7 30/90

尝试一下记录「计划学习时间」和「实际学习时间」,到期末看看能不能改进自己的计划能力。这个工作学习中很重要,也很有用。

耗时估计的公式

:Y=X+X/N ,Y=X-X/N,训练次数多了,X、Y就接近了。

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

参考资料

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

  1. Java程序设计第四周学习总结

    1. 本周学习总结 1.1 尝试使用思维导图总结有关继承的知识点. 1.2 使用常规方法总结其他上课内容. 答:①String类是final类,不能定义String的子类. ② instanceof ...

  2. 对于“2017面向对象程序设计(JAVA)第四周学习总结”存在问题的反馈

    对于“2017面向对象程序设计(JAVA)第四周学习总结”存在问题的反馈 “这部分同学博文总结没有写,实验作业没有提交.”——1.关于博文作业.实验作业教学功能的正解:学习知识.暴露问题.衔接课上.2 ...

  3. 杨其菊201771010134《面向对象程序设计(java)》第四周学习总结

    <面向对象程序设计(java)> 第四周学习总结 第一部分:理论知识 1.类与对象 a.类(class)是构造对象的模板或蓝图.由类构造对象的过程称为创建类的实例: java中类声明的格式 ...

  4. 201871010106-丁宣元 《面向对象程序设计(java)》第四周学习总结

    201871010106-丁宣元 <面向对象程序设计(java)>第四周学习总结 正文开头 项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-da ...

  5. 20155318 2016-2017-2 《Java程序设计》第九学习总结

    20155318 2016-2017-2 <Java程序设计>第九学习总结 教材学习内容总结 学习目标 了解JDBC架构 掌握JDBC架构 掌握反射与ClassLoader 了解自定义泛型 ...

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

    <Java程序设计>第二学习总结 教材学习内容总结 类型 byte(字节) shot(短整型) int(整型) long(长整型) float(浮点型) double(双精度) char( ...

  7. 20145304 刘钦令 Java程序设计第二周学习总结

    20145304 <Java程序设计>第2周学习总结 教材学习内容总结 java可区分基本类型和类类型(即参考类型)两大类型系统. 基本类型主要可区分为整数.字节.浮点数.字符与布尔. 整 ...

  8. 20145304 刘钦令 Java程序设计第一周学习总结

    20145304<Java程序设计>第1周学习总结 教材学习内容总结 1995年5月23日,是公认的Java的诞生日,Java正式由Oak改名为Java. Java的三大平台是:Java ...

  9. 20145120黄玄曦 《java程序设计》 寒假学习总结

    1和2.我对未来规划不多,我认为好好学习积累知识能帮助我应对未来的挑战,这是我的学习动力之一,此外,了解新知识满足好奇心也是我的主要的学习动力. 3.我认为专业课学习比公务员考试重要,我认为专业知识是 ...

  10. 201621123007 Java程序设计第一周 学习总结

    第一周-Java基本概念 201621123007 <Java程序设计> 第一周学习总结 1. 本周学习总结 java是面向对象的一类语言,三大特征:封装性,继承性,多态性. jdk jr ...

随机推荐

  1. MySQL语法相关其一

    一篇基础语法相关的笔记 // 参考资料: MySQL入门很简单 黄缙华等编著 清华大学出版社 北京 建议进入官网下载对应版本后安装:https://dev.mysql.com/downloads/my ...

  2. 0-创建scott数据

    CREATE TABLE dept (  deptno INT PRIMARY KEY,  dname VARCHAR(14),  loc VARCHAR(13) );   INSERT INTO d ...

  3. 函数去抖(debounce)与 函数节流(throttle)

    以下场景往往由于事件频繁被触发,因而频繁执行DOM操作.资源加载等重行为,导致UI停顿甚至浏览器崩溃. 1. window对象的resize.scroll事件 2. 拖拽时的mousemove事件 3 ...

  4. μCOS-II系统之事件(event)的使用规则及Semaphore的相互排斥量使用方法

    版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/wavemcu/article/details/27798493 ****************** ...

  5. Java对html标签的过滤和清洗

    OWASP HTML Sanitizer 是一个简单快捷的java类库,主要用于放置XSS 优点如下: 1.使用简单.不需要繁琐的xml配置,只用在代码中少量的编码 2.由Mike Samuel(谷歌 ...

  6. jQuery Datatable 表格插件

    Datatable 总体来说很好用,可以实现即时搜索和排序.但是只能用于数据量较少的情况下,如果数据量超过1K建议还是用表格加翻页,不然会很慢. datatable 中文网  http://datat ...

  7. PHP扩展功能 ---- 伪静态

    一.入门三部曲 1.什么是伪静态? 改写URL,以静态的url形式访问页面,但其实是用PHP一类的动态脚本来处理的. 2.为什么要用伪静态? 需要动态获取数据,但是又希望能够对搜索引擎友好. 3.怎么 ...

  8. 【luogu P2831 愤怒的小鸟】 题解

    题目链接:https://www.luogu.org/problemnew/show/P2831 写点做题总结:dp,搜索,重在设计状态,状态设的好,转移起来也方便. 对于一条抛物线,三点确定.(0, ...

  9. centos6.4 安装code::blocks

    今天下午闲着没事尝试在自己的PC中的CentOS上装一个Code::Blocks,因为是Linux菜鸟折腾了一下午才基本算搞定但依然有疑惑: 在网上各种谷哥度娘最后才发现还是官方的文档最靠谱:看这里. ...

  10. multiprocessing进程开发RuntimeError

    windows环境下multiprocessing报如下异常信息: RuntimeError: An attempt has been made to start a new process befo ...