教材学习内容总结

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

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

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

多态:子类只能继承一个父类,即其中存在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. python使用SQLAlchemy对mysql操作

    安装SQLAlchemy pip install sqlalchemy 在MySQL的test数据库中创建的user表,用SQLAlchemy来试试 数据库连接 第一步,导入SQLAlchemy,并初 ...

  2. Homebrew 安装 MySQL

    安装 Homebrew brew doctor 确认 brew 在正常工作 brew update 更新包 brew install mysql 安装 MySQL ​ ==> Downloadi ...

  3. 5、Node.js 回调函数

    内容:回调函数:阻塞/同步.非阻塞.和异步区别:阻塞和非阻塞代码实例 Node.js 回调函数Node.js 异步编程的直接体现就是回调.异步编程依托于回调来实现,但不能说使用了回调后程序就异步化了. ...

  4. 【1】【MOOC】Python游戏开发入门-北京理工大学【第二部分-游戏开发之框架】

    学习地址链接:http://www.icourse163.org/course/0809BIT021E-1001873001?utm_campaign=share&utm_medium=and ...

  5. ApplicationEventPublisher笔记

    ApplicationEventPublisher是ApplicationContext的父接口之一.这接口的作用是:Interface that encapsulates event publica ...

  6. 关于使用Filter降低Lucene tf idf打分计算的调研

    将query改成filter,lucene中有个QueryWrapperFilter性能比较差,所以基本上都须要自己写filter.包含TermFilter,ExactPhraseFilter,Con ...

  7. Save and read double array in a binary file

    ;} 32 bytes read 9.5 -3.4 1 2.1 "

  8. 图论——最短路径 Dijkstra算法、Floyd算法

    1.弗洛伊德算法(Floyd) 弗洛伊算法核心就是三重循环,M [ j ] [ k ] 表示从 j 到 k 的路径,而 i 表示当前 j 到 k 可以借助的点:红色部分表示,如果 j 到 i ,i 到 ...

  9. 【jQuery】Deferred(延迟)对象

    本文针对jQuery-todolist项目中使用到的Deferred(延迟)对象进行具体分析 $.Deferred() 是一个构造函数,用来返回一个链式实用对象方法来注册多个回调,并且调用回调队列,传 ...

  10. Dubbo实践(十二)Refer

    Spring在启动Dubbo客户端应用时,会实例化ReferenceBean<T>并设置配置属性,然后调用ReferenceConfig中的get方法: public synchroniz ...