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()
教材学习内容总结
第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方法,尽管这两个子类继承自同一个父类。
Java中的protected访问修饰符
中提到:在该类包外的子类中能“看到“的只是子类自己继承来的protected 方法和属性,它是不能“看到“它的父类对象的protected方法和属性的。
问题6:抽象类的具体用法
具体看Java中的抽象类 ,抽象类限制规定子类必须实现某些方法,但不关注实现细节。
代码调试中的问题和解决过程
- 问题1:git commit 时出现错误
- 解决方案:关于git commit时的错误
跳过这个commit写新的程序后,再第二次提交的时候没有出现这个情况,所以老师给出的解决方法也没有试上。如果下次再碰上这个问题,可以用谢老师给出的方法来解决了。
代码托管
(statistics.sh脚本的运行结果截图)
上周考试错题总结
上周未考试
结对及互评
点评过的同学博客和代码
其他(感悟、思考等,可选)
这周学习的主要时间花在了蓝墨云班课的视频上,这和以往死磕教材的方法完全不同,但是效果对我来说变得比以前更好了。这周娄老师发的视频很多,一个个看下来看了好几天也做了很多笔记,但是在后来看书本的时候就能明显感觉到思路清晰了。以往没有视频的时候,光看书本往往会有一知半解的状况,能看懂书上的理论但不知道该怎么实践。而视频中老师那种以理论为基础、践操作为主体的讲解方式,能够让我更好的去理解基本概念。可能是一个假期的调整,java的学习对我来说没有以前那么抵触,我也渐渐感觉到这个语言的魅力。希望自己可以好好学习!
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 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小时
改进情况:多动手,多理解,多学习。
(有空多看看现代软件工程 课件
软件工程师能力自我评价表)