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

教材学习内容总结

一、继承

1.父类:为了改进代码,可以将多个代码中相同的部分提升为父类,其他类只需用extends这个关键词继承父类的行为,还可以扩充父类没有的行为,如下:

  1. public class Magician1 extends Role {
  2. public void fight(){
  3. System.out.println("魔法攻击");
  4. }
  5. public void cure(){
  6. System.out.println("魔法治疗");
  7. }
  8. }
  1. 子类和父类的is-a关系
  2. 继承的好处与弊端:提高代码的重复利用性,利于维护,增强代码阅读性;因为类与类之间产生了关系,某一个类的改变直接影响了另一个类,也许这个改变另一个类不希望有这个改变
  3. 重新定义:子类在继承父类之后,定义与父类中相同的方法部署,但执行内容不同
  4. 内建的标准标注为@Override
  5. 用abstract标示抽象方法

二、继承语法

  1. 被定义为private无法直接存取,可以定义这些数据成员为protected,不开放访问权限,其中,相同包中的类可以直接存取,不同包中的类可以在继承后的子类直接存取
  2. Java中共有四个权限范围:private,无关键字,protected,public,权限依次从小到大。
  3. 如果想取得父类中的方法定义,可以在调用方法前,加上super关键字,执行父类中某构造函数,可以使用super()指定。子类构造函数中没有指定执行父类中哪个构造函数,默认会调用父类中无参数构造函数。
  4. final class表示这个类是最后一个,不会再有子类,不能被继承
  5. 使用标准备注@Override

三、接口

  1. 类与接口之间是实现关系,而且类可以继承一个类的同时实现多个接口,接口与接口之间可以有继承关系。
  2. interface:定义抽象的行为与外观,接口中的方法没有操作时,一定得是公开且抽象,此时可以省略public abstract
  3. enum语法可用于定义枚举常数。

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

  • 问题1:public,private,protected,和默认的区别

  • public修饰词,表示成员是公开的,所有其他类都可以访问;

  • private修饰词,表示成员是私有的,只有自身可以访问;

  • protected,表示受保护权限,体现在继承,即子类可以访问父类受保护成员,同时相同包内的其他类也可以访问protected成员。

  • 无修饰词(默认),表示包访问权限(friendly, java语言中是没有friendly这个修饰符的,这样称呼应该是来源于c++ ),同一个包内可以访问,访问权限是包级访问权限。

  • 问题2:this()与super()只能择一调用,而且一定要在构造函数第一行执行。

  1. class Some {
  2. Some(){
  3. System.out.println("调用Some()");
  4. }
  5. some(int i){
  6. System.out.println("调用Some(int i)");
  7. }
  8. }
  9. class Other extends Some{
  10. Other(){
  11. super(10);
  12. System.out.println("调用Other()");
  13. }
  14. }
  • 问题3:class前也可以加上final关键字
  • 如果class前使用了final关键字定义,那么表示这个类是最后一个了,不会再有子类,也就是不能被继承。

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

  • 问题1:课本讲多态与is-a是一段代码调试的问题

  • 编译检查语法从右往左,上图中编译时解读为Role is a Swordsman,编译失败,可以改为

  1. Role role1 = new Swordsman;
  2. SwordsMan swordsMan = (SwordsMan) role1;

将role1参考至Swordsman,不会出错,但

  1. Role role2 = new Magicman;
  2. SwordsMan swordsMan = (SwordsMan) role1;

将Role扮演Swordsman,role2参考的是Magicman,编译不会通过。

  • 问题2:课本中的多个RPG程序编辑不能通过,显示如下提示:

  • 通过看同学博客中提出的相似问题:操作接口时缺少具体行为,补全定义后可以解决。

  • 问题3:子类重新定义与父类完全相同的方法这种情况是什么情况?

  • 解决方案:这种情况称为覆盖,此时,子类中已找不到父类原来的方法,它的内存位置已经被替代。

代码托管

  • 代码提交过程截图:

  • 代码量截图:

上周考试错题总结

  1. 填空:Linux Bash中,(grep )命令可以进行全文搜索。
  2. 填空:~0b1010的十进制值是(-11)备注:以后可以直接编程解答这类问题。
  3. 填空:“30”转化为byte类型的30的语句是Byte.parseByte(“30”)
  4. 判断:Java中类总会有默认构造方法。(X) 备注:JAVA任何一个类都有一个默认的无参构造函数
  5. 填空:Java中的多维数组都是由(一维数组组成)。

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

这周博客写的不多,调试代码用了不少时间,学Java需要不断巩固,因为每周学习量比较大,这周学习时,就开始遗忘上周的内容了,如何更全面的学习每一章的知识点做到不遗漏,是我下个阶段主要的努力方向。

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 30篇 400小时
第一周 50/100 1/1 24/24 安装学习Java的一系列软件
第二周 250/300 1/2 30/54 了解Java的基本语法
第三周 552/852 1/3 16/60 了解Java是面向对象的语言
第四周 717/1569 1/4 10/70 了解Java继承与接口

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

  • 计划学习时间:10小时

  • 实际学习时间:10小时

参考资料

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

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

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

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

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

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

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

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

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

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

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

  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. 【Win10+eclipse+MinGW+QT安装教程】已有eclipse环境下配置QT插件出错详解

    (纪念一下装了一整天濒临绝望的自己[/doge]) (以下所有下载项一律使用32位) step1:下载安装eclipse.适配的jdk.MinGW和QT 1.下载32位eclipse for c++以 ...

  2. pat 5—1 求该日是该年的第几天

    哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈 前面还是欠了一堆,慢慢补吧. 看了别人的博客才知道前面有一次圆面积的题,我上课是在干啥......... 打是打出来了,但是还是有几个蒙蔽的地方: ...

  3. Cookies的各方面知识(基础/高级)深度了解

    Cookies想必所有人都了解本文将围绕Cookies基础知识(什么是Cookies/Cookies如何传递/Cookies如何存储/Cookies如何查看)Cookies高级知识/Cookie的限制 ...

  4. Access用OleDbParameter无法更新数据解决方案

    昨天遇到了一个非常郁闷的问题,这个问题我几乎花了一天的时间才找到了造成问题的症结并解决. 问题是这样,原本一个使用Sqlserver数 据库的系统,我要让它实现Access数据接口,即我可以很方便地把 ...

  5. Oracle数据库用户名密码【转载自百度经验】

    登录到安装oracle数据库服务器的操作系统.打开命令窗口:(我的演示机器是windows)   查看环境变量ORACLE_SID的设置情况: windows: echo %ORACLE_SID% l ...

  6. css3鼠标经过出现转圈菜单(仿)

    <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...

  7. 问题:android学习内容破碎,我个人关于如何学习android的一些个人经历

    android学习两个月心得 我于大三下学期,开始准备学习android,在寒假期间,学了毕向东的java视频的前10天,觉得还不错,上网找评论,他们都说,只要学到多线程就可以学习android了, ...

  8. [转]CentOS 7忘记root密码解决办法

    转自:http://www.linuxidc.com/Linux/2016-08/134034.htm  亲测可用! CentOS 7 root密码的重置方式和CentOS 6完全不一样,CentOS ...

  9. tar 打包带软连接的文件

    打包普通文件夹,压缩带参数z,创建tar.gz tar -cvf ./tmp/SK_Aug_camera.tar ./gap_40_5 但是文件夹里含有软连接,带参数 h tar -cvhf ./tm ...

  10. 【[SCOI2013]摩托车交易 】

    倍增什么的最慢了,常数太大了 我们可以上树剖啊 但是如果用树剖来查询树上两点之间的最小边权的话,可能只能在上一棵线段树? 那也太\(naive\)了,尽管倍增常数大,但是还是比两个\(log\)快的 ...