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

教材学习内容总结

继承

  • 继承就是避免多个类间重复定义共同行为。
  • 面向对象中,子类继承父类,就是把程序中相同的代码部分提升为父类。
  • extends关键字,表示前者会扩充后者的行为,即继承后者的行为。fight()为SwordsMan扩充的Role没有的行为。
  • private成员也会被继承,不过子类无法直接存取,必须通过父类提供的方法存取。

is-a(是一种)关系

  • 子类只能继承一个父类,这种子类父类之间的关系就是is-a关系。
  • 检查语法逻辑是否正确,方式是从=右边往左读:判断右边是不是一种左边。例:Role role1=new SwordsMan();即判断SwordsMan是不是一种Role?若是则语法正确,反之则编译失败。
  • 强制让后者是一种前者:Role role1=new SwordsMan();SwordsMan swordsman=(SwordsMan) role1;

多态

  • 使用单一接口操作多种类型的对象,具有更高的可维护性。
  • Java以继承及界面来实现多态,是次态多态的一种实现。

      public class RPG2{public static void main (String[] args){SwordsMan swordsMan = new SwordsMan();swordsMan.setName("Justin");swordsMan.setLevel(1);swordsMan.setBlood(200);Magician magician = new Magician();magician.setName("Moinca");magician.setLevel(1);magician.setBlood(100);showBlood(swordsMan);   //SwordsMan是一种RoleshowBlood(magician);}static void showBlood(Role role)   //声明为Role类型{System.out.printf("%s 血量 %d%n",role.getName(), role.getBlood());}}

重新定义行为

  • SwordsMan与Magician的fight()方法签署的都是public void fight(),操作接口相同,只是方法操作内容不同,因此,可以将fight()方法提升至Role类中定义。
  • 如果传入drawFight()的是SwordsMan,role参数参考的就是SwordsMan实例,操作的就是SwordsMan上的fight()方法定义。
  • 重新定义父类中某个方法时,子类必须撰写与父类方法中相同的签署。可以在子类中某个方法前使用@Override要求编译程序检查该方法是不是真的重新定义了父类中某个方法,如果不是会引发编译错误。
  • 对于父类中的方法权限,只能扩大不能缩小。

抽象方法 抽象类

  • 抽象方法:某方法区块中没有任何程序代码操作,用abstract表示该方法为抽象方法,不用撰写{}区块,直接";"结束即可。
  • 抽象类:内含抽象方法的类,一定要在class前标示abstract,表示类定义不完整,不能用来生成实例。

protected

  • 被声明为protected的成员,相同包中的类可以直接存取,不同包中的类可以在继承后的子类直接存取。
  • private、无关键字、protected、public权限依次递增。

构造函数

  • 类有继承关系时,会先进行父类定义的初始流程,再进行子类定义的初始流程。
  • 父类中可以重载多个构造函数,如果子类构造函数中没有制定执行父类中哪个构造函数,默认会调用父类中无参数构造函数。
  • this()super()只能择一调用,并且要写在构造函数第一行执行。

final关键字

  • class或方法被声明为final,表示这是最后一个,不会再有子类或子类不可以重新定义方法。

java.lang.Object

  • java.lang.Object是最上层父类,Java中所有对象一定是一种Object。

接口的默认

  • Java中可以使用interface来定义抽象的行为和外观。
  • 接口中的方法没有操作时一定得是公开且抽象的。
  • 接口可以继承别的接口,也可以同时继承两个以上的接口,同样也是用extends关键字,这代表了继承父接口的行为。

匿名内部类

  • 临时继承某个类或操作某个接口并建立实例,由于这类子类或接口操作类只使用一次,不需要为这些类定义名称,可以使用匿名内部类。

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

  • 问题:本来像书上p167中的fight()方法运行都没有问题,但是按照书上p169抽象方法与抽象类中,将前面的Role.java中的fight()方法改成如下的格式public abstract void fight();之后,RPG.java就运行不了了。
  • 解决方法:待解决。

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

  • 问题:Guest访客名称,访客名单在run的时候出现了问题

    后来在run edit中发现自己把各项都改成了Guest
  • 解决方法:把run edit中各项改了

    运行结果正确

代码托管

上周考试错题总结

  • 填空:Linux Bash中,(grep )命令可以进行全文搜索。
  • 填空:System.out.println(“”+52+25);的结果是(5225)
  • 填空:System.out.println(52+25+””);的结果是(77)
  • 填空:p86 命令行下编译Guess.java的命令是(javac -d . Guess.java)
  • 填空:两个Integer对象比较大小,可以使用(comareTo())方法
    上网查Interger对象的比较方法写的是ValueOf()。老师答案是comareTo()。不太理解。
  • 填空:“30”转化为byte类型的30的语句是(Byte.parseByte(“30”);)。

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 3000行 20篇 400小时
第一周 200/200 1/1 18/18
第二周 153/353 1/2 18/36
第三周 356/709 1/3 24/60
第四周 450/1259 1/4 28/85

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

  • 计划学习时间:30小时

  • 实际学习时间:28小时

  • 改进情况:计划学习时间由于上周没有达成,所以这周仍然定为30小时,学习时间有所提高。

  • 有空多看看现代软件工程 课件 软件工程师能力自我评价表

参考资料

  • Java学习笔记(第8版)

  • 《Java学习笔记(第8版)》学习指导

转载于:https://www.cnblogs.com/20155305ql/p/6537588.html

20155305乔磊2016-2017-2《Java程序设计》第四周学习总结相关推荐

  1. 20155305乔磊2016-2017-2《Java程序设计》第六周学习总结

    20155305乔磊2016-2017-2<Java程序设计>第六周学习总结 教材学习内容总结 InputStream与OutputStream 串流设计 1.串流:Java将输入/输出抽 ...

  2. 20155305乔磊2016-2017-2《Java程序设计》第十周学习总结

    20155305乔磊2016-2017-2<Java程序设计>第十周学习总结 教材学习内容总结 Java的网络编程 网络编程 网络编程就是在两个或两个以上的设备(例如计算机)之间传输数据. ...

  3. 20155305乔磊2016-2017-2《Java程序设计》第八周学习总结

    20155305乔磊2016-2017-2<Java程序设计>第八周学习总结 教材学习内容总结 通用API 日志API 1.java.util.logging包提供了日志功能相关类与接口, ...

  4. 20155305乔磊2016-2017-2《Java程序设计》第五周学习总结

    20155305乔磊2016-2017-2<Java程序设计>第五周学习总结 教材学习内容总结 try.catch 1.求平均数程序示例 import java.util.Scanner; ...

  5. 20155305乔磊2016-2017-2《Java程序设计》第三周学习总结

    20155305乔磊 2016-2017-2 <Java程序设计>第三周学习总结 教材学习内容总结 对象(Object):存在的具体实体,具有明确的状态和行为 类(Class):具有相同属 ...

  6. 20155305乔磊2016-2017-2《Java程序设计》第二周学习总结

    20155305乔磊 2016-2017-2 <Java程序设计>第二周学习总结 教材学习内容总结 第三章学习了基本类型 整数(short.int.long) 字节(byte) 浮点数(f ...

  7. 20155305乔磊2016-2017-2《Java程序设计》第九周学习总结

    20155305 2016-2017-2 <Java程序设计>第九周学习总结 教材学习内容总结 JDBC入门 JDBC简介 1.JDBC是java联机数据库的标准规范,它定义了一组标准类与 ...

  8. 《Java程序设计》课程学习资源集合

    文章目录 1.<Java程序设计>在线课程(福建省精品在线课程) 2. 在线编程练习题集 3. 郑老师教学博客 4.<Java程序设计>在线课程使用说明-2022版 5. 大学 ...

  9. 20155305乔磊2016-2017-2《Java程序设计》第一周学习总结

    学习考核方式后感 老师对于成绩的获得有很多细节的地方,获得高分很不容易,考核次数也很多,100分分为课堂考核,实验,团队项目,老师对我们的要求可以说非常的严格,我也为有一个要求严格的老师感到幸运荣幸. ...

最新文章

  1. mysql主键自增长空缺_Mysql 主键自增长auto_increment问题分析
  2. UILabel的自适应宽高
  3. MySQL数据库备份(INTO OUTFILE)
  4. DIV CSS布局-固定页面开度布局
  5. 【学习笔记】 IPv4地址、NAT与子网掩码、子网划分
  6. 06软件构架实践阅读笔记之六
  7. Java中String对象存储
  8. devstack安装openstack
  9. oracle数据库数据消失,,保存在数据库里的数据莫名其妙的消失
  10. 中职计算机课程授课类型,中职计算机课程「任务引领型」教学方法初探
  11. 计算机科学cs50_世界顶尖CS大学提供500门免费计算机科学课程
  12. [渝粤教育] 西南科技大学 公共人力资源管理 在线考试复习资料
  13. kafka搭建,演示
  14. char* char[] char** char*[] char[][]详解
  15. 多模态自编码器从EEG信号预测fNIRS静息态
  16. 计算机桌面点不进系统,电脑开机进不了桌面,小编教你电脑开机进不了桌面怎么办...
  17. mmo手游地图同步总结
  18. Unity 延时的三种方法
  19. 数据分析: 带你一览特朗普总统的“微博”世界 (上)
  20. 债市、股市、汇市、利息四者之间有什么样的联系?

热门文章

  1. c语言约瑟夫环问题,C++_详解约瑟夫环问题及其相关的C语言算法实现,约瑟夫环问题 N个人围成一圈 - phpStudy...
  2. java怎么把文件写入到usb里_如何创建PowerShell脚本以将文件复制到USB闪存驱动器?...
  3. android 日期国际化,Flutter 日期时间选择类控件及国际化
  4. python初体验-hello world答案_Python初体验_基础(一)
  5. CSDN挑战编程——《数学问题》
  6. 从uptime、stress、mpstat、pidstat观察CPU密集型、IO密集型、进程密集型切换的系统性能
  7. kotlin 计算平方_Kotlin程序来计算复利
  8. ruby hash方法_Ruby中带有示例的Hash.default(key = nil)方法
  9. TensorFlow在Anaconda环境下创建
  10. c和汇编混合编程----shellcode----弹出计算器