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

教材学习内容总结

学习目标

  1. 理解封装、继承、多态的关系
  2. 理解抽象类与接口的区别
  3. 掌握S.O.L.I.D原则
  4. 了解模式和设计模式
  5. 能正确覆盖方法
  6. 了解垃圾回收机制
  7. 掌握Object类
  8. 掌握enum

第六章 章节主要内容

小结

  • 继承是指避免多个类间重复定义共同行为。

  • 继承的好处1:再更改名称时,只需修改父类名称,继承父类的子类均无需修改。(需注意的是private成员同样会被继承,但子类无法直接存取,必须通过父类提供的方法来存取(在父类愿意提供访问方法的前提下。))

  • Java中,子类只能继承一个父类,继承除了避免类间重复的行为定义,子类和父类间还会有is-a的关系。A(子类) 继承了B(父类),则表示为A(子类) is a B(父类)

  • 多态是指使用单一接口操作多种类型的对象。Java以继承及界面来实现多态。

  • abstract可标示方法为抽象方法,该方法不用撰写{}区块,直接使用; 结束即可。

  • 权限关键字与范围

    关键字 类内部 相同包类 不同包类
    public 可存取 可存取 可存取
    protected 可存取 可存取 子类可存取
    可存取 可存取 不可存取
    private 可存取 不可存取 不可存取
  • 重新定义方法对于父类中的方法权限只能扩大不能缩小。

  • instanceOf运算符用来判断对象是否由某个类创建,左操作数是对象,右操作数是类。

第七章 章节主要内容

小结

  • 接口可以用于定义行为但不定义操作。
  • 类要操作接口,必须使用impements 关键字。
  • 操作某接口时有两种处理方式:
    1. 操作接口中定义的方法
    2. 再度将该方法标示为abstract
  • 类与接口之间是实现关系,而且类可以继承一个类的同时实现多个接口,接口与接口之间可以有继承关系。
  • 可使用interface 来定义抽象的行为与外观,接口中的方法没有操作时,一定得是公开且抽象,此时可以省略public abstract
  • enum 语法可用于定义枚举常数。enum 定义了特殊的类,直接撰写程序继承Enum 类会被编译程序拒绝。
  • 在接口中枚举常数一定要使用= 指定值。 在类中定义枚举常数一定要明确写出public static final

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

  • 问题1:abstract 抽象类、抽象方法如何使用?

  • 解决方案:

    1. abstract修饰类,会使这个类成为一个抽象类,这个类将不能生成对象实例,但可以做为对象变量声明的类型,也就是编译时类型,抽象类就像当于一类的半成品,需要子类继承并覆盖其中的抽象方法。

    2. abstract修饰方法,会使这个方法变成抽象方法,也就是只有声明(定义)而没有实现,实现部分以";"代替。需要子类继承实现(覆盖)。

    注意:有抽象方法的类一定是抽象类。但是抽象类中不一定都是抽象方法,也可以全是具体方法。

    1. abstract修饰符在修饰类时必须放在类名前。

    2. abstract修饰方法就是要求其子类覆盖(实现)这个方法。调用时可以以多态方式调用子类覆盖(实现)后的方法,也就是说抽象方法必须在其子类中实现,除非子类本身也是抽象类。

    注意:父类是抽象类,其中有抽象方法,那么子类继承父类,并把父类中的所有抽象方法都实现(覆盖)了,子类才有创建对象的实例的能力,否则子类也必须是抽象类。抽象类中可以有构造方法,是子类在构造子类对象时需要调用的父类(抽象类)的构造方法。

  • 问题2:JVM的垃圾收集机制中什么时候会触发一个对象的回收?

  • 解决方案:根据搜索得知:

    1. 对象没有引用
    2. 作用域发生未捕获异常
    3. 程序在作用域正常执行完毕
    4. 程序执行了System.exit()
    5. 程序发生意外终止(被杀进程等)

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

  • 问题1:
  • 解决方案:因为同一个java源文件中最多只能有一个声明为public的类,而书上的代码块均分别为独立的java源文件,所以在组合时忽略了这个问题。将除了RPG3模块的其他模块中声明为public的部分删除。
  • 问题2:
  • 解决方案:经过检查发现是由于主类中没有将Magician名称修所导致的问题。
  • 问题3:
public class RPG4 {
public static void main(String[] args) {
SwordsMan4 swordsMan = new SwordsMan4();
swordsMan.setName("Justin");
swordsMan.setLevel(1);
swordsMan.setBlood(200); Magician4 magician = new Magician4();
magician.setName("Monica");
magician.setLevel(1);
magician.setBlood(100); drawFight(swordsMan);
drawFight(magician);
} static void drawFight(Role4 role) {
System.out.print(role.getName());
role.fight();
}
}

内部类为何无法使用static?(提示为:inner classes cannot have static declarations/内部类不能具有静态声明)

  • 解决方案:因为内部类特殊,他被定向为是和成员变量,方法一样的外部类成员。内部类必须跟外部类实例相关联才能初始化,这是其特点之一,而静态成员是不需要实例就初始化的。如果一个非静态内部类有了静态成员,静态成员不依托于任何内部类实例,那结果也就是此内部类不需要外部类实例就初始化了变量,严重侵害了内部类的定向。

代码托管

  • 代码提交过程截图:

  • 代码量截图:

上周考试错题总结

  • 错题1:17. CH04 判断:Clothes [] c1; …; Clothes [] c2=Arrays.copyOf(c1,c1.length)是浅拷贝。(OK)
  • 理解情况:被复制对象的所有变量都含有与原来的对象相同的值,而所有的对其他对象的引用仍然指向原来的对象。浅层复制仅仅复制所考虑的对象,而不复制它所引用的对象。
  • 错题2:29. CH05 填空:Java中成员方法中引用成员变量,要使用(this)关键字。
  • 理解情况:在Java中,this()代表了调用另一个构造函数,所以在成员方法中引用成员变量时,需要使用到this关键字。
  • 错题3:32. CH05 判断:Java中方法内可以定义类。(OK)
  • 理解情况:方法中不能直接定义方法,但可以在方法中定义类,类里面再定义方法。

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

现在应该算Java刚入门没多久,在学习过程中产生的问题多是在输入代码时出现的语法错误,这点需要加以注意和改正。

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 18篇 300小时
第一周 15/15 1/1 15/15
第二周 159/174 1/2 20/35
第三周 414/588 1/3 18/53 了解了封装、对象
第四周 461/1049 1/4 18/71
  • 计划学习时间:16小时

  • 实际学习时间:18小时

  • 改进情况:由于已经开学快一个月了,除了日常学习,学生工作也变得繁忙了起来。同时兼顾二者是需要一定的精力的,所以根据实际情况适当修改了学习时长。但相对之后的课程来说,这一周还算能够有充裕的时间来学习。

参考资料

20155330 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. codeforces 812E Sagheer and Apple Tree(思维、nim博弈)

    codeforces 812E Sagheer and Apple Tree 题意 一棵带点权有根树,保证所有叶子节点到根的距离同奇偶. 每次可以选择一个点,把它的点权删除x,它的某个儿子的点权增加x ...

  2. msysgit 上传文件夹,规范化的日常

    在我们第一次成功的上传到github之后,要上传文件夹的我们要在msysgit里输入些什么呢? 选择要上传的文件夹前一项右键点击git bash here 进入msysgit后 首先初始化,输入 gi ...

  3. Java的日期时间

    Date类 Date d = new Date() 使用SimpleDateFormat格式化日期. SimpleDateFormat允许用户自定义日期时间格式来运行. package cuiyuee ...

  4. jq实现简单的滑动解锁效果

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

  5. Java集合源码 -- Collection框架概述

    1.概述 collection框架是用于处理各种数据结构的,要根据各种数据结构的特点理解它 它能够保存对象,并提供很多的操作去管理对象,当你面临下面的情况时,也许你应该考虑用集合类 1.容器的长度是不 ...

  6. HTTPS科普扫盲

    为什么需要HTTPS HTTP是明文传输的,也就意味着,介于发送端.接收端中间的任意节点都可以知道你们传输的内容是什么.这些节点可能是路由器.代理等. 举个最常见的例子,用户登陆.用户输入账号,密码, ...

  7. 3、Spring Cloud - Eureka(高可用Eureka Server集群)

    在实际的项目中,可能有几十个或者几百个的微服务实例,这时 Eureka Server 承担了非 常高的负载.由于 Eureka Server 在微服务架构中有着举足重轻的作用,所以需要对 Eureka ...

  8. Python 模块化 自定义模块 (四)

    自定义模块 一个.py文件就是一个模块 创建以下三个文件: 运行test.py ,查看运行结果. #test.py print("this is test module") imp ...

  9. 获取主机ip地址

    直接访问http://icanhazip.com

  10. HDU 1004 Let the Balloon Rise(map的使用)

    传送门: http://acm.hdu.edu.cn/showproblem.php?pid=1004 Let the Balloon Rise Time Limit: 2000/1000 MS (J ...