20162301 张师瑜《程序设计与数据结构》第六周学习总结

时间:2023-02-21 14:34:32

20162301 2016-2017-2 《程序设计与数据结构》第6周学习总结

蓝墨云班课学习内容总结

  • 18讲 继承初步:继承的概念、继承的用途、继承的基本语法特点
  • 19讲 子类实例化的过程:生成子类的过程、使用super调用父类构造函数的方法(使用时为构造函数的第一语句)
  • 20讲 函数的复写:函数的复写(override 也被称为覆盖或重写)、使用super调用父类的成员函数
  • 21讲 对象的转型 :对象的向上转型(将子类的对象赋值给父类的引用、一定是可以成功的)、对象的向下转型(先进行向上转型后强制类型转换)
  • 22讲 面对对象的应用
  • 23讲 抽象类和抽象函数:抽象类定义及语法特征、抽象类的作用(抽象类不能生成对象,但可以拥有构造函数)
  • 24讲 为什么用抽象类
  • 36、37、38讲 Java当中的线程:创建线程的方法、线程的简单控制方法、同步代码块
  • 41、42、43讲 类集框架:类集框架、集合、列表、映射的定义,Collection接口(调用set对象的Iterator方法),Map与HashMap的使用方法,JDK帮助文档的使用方法
  • 44讲 equals函数的作用:equals函数的作用、复写equals函数的方法
  • 45讲 hashCode()与toString()
    20162301 张师瑜《程序设计与数据结构》第六周学习总结
    20162301 张师瑜《程序设计与数据结构》第六周学习总结
    20162301 张师瑜《程序设计与数据结构》第六周学习总结

教材学习内容总结

第8章 继承
  • 创建子类 :①继承:is-a关系 ②protected修饰符(在UML类图中用#表示),保护可见性提供了继承之间最恰当的封装机制。③super引用(调用时用于构造函数的第一行,用法与this有类似)④多重继承(Java的继承机制称为单重继承,接下来要学习的Java接口提供多重继承的最优特征)
  • 方法的重写 :①子类可以重写(重定义)——继承来自父类的方法②隐藏变量
  • 类层次 :①一个类的子类可以是一个或多个其他类的父类,这样形成了类层次。②公共特性应该放到类层次中尽可能高的位置上。③Object类:Java的所有类都直接或间接地派生于Object类,所以Java程序中地每个类都继承了toString和equals方法。④抽象类(抽象类不能实例化)
  • 可见性 :私有成员也被子类继承,可以间接引用它们
  • 设计继承 :①设计软件必须谨慎且具体地声明继承②final修饰符可用来限制继承

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

  • 问题1:蓝墨云班课中在讲到equals函数时,老师提到可以用instanceof操作符进行比较对象类型是否相同,但是没有具体讲怎么判断。

  • 解决方案:instanceof操作符用于判断前面的对象是否是后面的类,或者其子类、实现类的实例。如果是则返回true 否则就返回false。表达式result = object instanceof class。参数:result:布尔类型。
    Object:任意对象表达式。Class:任意已定义的对象类

  • 问题2:同样是在学习视频中,老师提到了implements

  • 解决方案:搜索有关的资料,implements是一个类实现一个接口用的关键字,它是用来实现接口中定义的抽象方法。

  • 问题3:在上个问题的查询过程中,有很多关于extends与implements区别的问题

  • 解决方案:extends是继承类,implements是实现接口。
    类只能继承一个,接口可以实现多个。
    extends继承父类的时候可以重写父类的方法, 只要那个类不是声明为final或者那个类定义为abstract的就能继承。implements实现接口,必须实现接口的所有方法(抽象类除外)。接口和类是不同的:类中是有程序实现的,继承会覆盖父类定义的变量或者函数;而接口中无程序实现,只可以预定义方法,实现接口时子类不可以覆盖父类的方法或者变量,即使子类定义与父类相同的变量或者函数,也会被父类取代掉。
    若同时用到 extends 和 implements 的时候,extends 必须放在 implements 关键字之前。class A extends B implements C,D,E {} (class 子类名 extends 父类名 implenments 接口名)
    参考于extends和implements区别Java 中extends与implements使用方法

  • 问题4:对于接口的概念模糊,不了解

  • 解决方法:接口的问题在书本第九章涉及到,估计下周就会学到。看到答疑论坛上张之睿同学的提问,对接口有了初步的了解 (关于接口的问题

  • 问题5:protected修饰符的具体用法

  • 解决方法:Java中访问修饰符protected的权限
    中提到:不能在一个子类中访问另一个子类的protected方法,尽管这两个子类继承自同一个父类。
    20162301 张师瑜《程序设计与数据结构》第六周学习总结

Java中的protected访问修饰符
中提到:在该类包外的子类中能“看到“的只是子类自己继承来的protected 方法和属性,它是不能“看到“它的父类对象的protected方法和属性的。

  • 问题6:抽象类的具体用法

  • 具体看Java中的抽象类 ,抽象类限制规定子类必须实现某些方法,但不关注实现细节。
    20162301 张师瑜《程序设计与数据结构》第六周学习总结
    20162301 张师瑜《程序设计与数据结构》第六周学习总结
    20162301 张师瑜《程序设计与数据结构》第六周学习总结
    20162301 张师瑜《程序设计与数据结构》第六周学习总结

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

  • 问题1:git commit 时出现错误
  • 解决方案:关于git commit时的错误
    20162301 张师瑜《程序设计与数据结构》第六周学习总结
    跳过这个commit写新的程序后,再第二次提交的时候没有出现这个情况,所以老师给出的解决方法也没有试上。如果下次再碰上这个问题,可以用谢老师给出的方法来解决了。

代码托管

20162301 张师瑜《程序设计与数据结构》第六周学习总结

(statistics.sh脚本的运行结果截图)

上周考试错题总结

上周未考试

结对及互评

点评过的同学博客和代码

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

这周学习的主要时间花在了蓝墨云班课的视频上,这和以往死磕教材的方法完全不同,但是效果对我来说变得比以前更好了。这周娄老师发的视频很多,一个个看下来看了好几天也做了很多笔记,但是在后来看书本的时候就能明显感觉到思路清晰了。以往没有视频的时候,光看书本往往会有一知半解的状况,能看懂书上的理论但不知道该怎么实践。而视频中老师那种以理论为基础、践操作为主体的讲解方式,能够让我更好的去理解基本概念。可能是一个假期的调整,java的学习对我来说没有以前那么抵触,我也渐渐感觉到这个语言的魅力。希望自己可以好好学习!

20162301 张师瑜《程序设计与数据结构》第六周学习总结

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 30篇 400小时
第一周 57/57 1/1 24/24 绪论
第二周 338/395 1/2 18/42 数据和表达式
第三周 497/892 1/3 18/60 使用类和对象
第四周 839/1731 1/4 30/90 条件与循环
第五周 1018/2749 1/5 10/100 编写类
第六周 216/ 2965 1/6 15/115 继承

尝试一下记录「计划学习时间」和「实际学习时间」,到期末看看能不能改进自己的计划能力。这个工作学习中很重要,也很有用。
耗时估计的公式
:Y=X+X/N ,Y=X-X/N,训练次数多了,X、Y就接近了。

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

  • 计划学习时间:12小时

  • 实际学习时间:15小时

  • 改进情况:多动手,多理解,多学习。

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

参考资料