20172332 2017-2018-2 《程序设计与数据结构》第七周学习总结

20172332 2017-2018-2 《程序设计与数据结构》第六周学习总结

教材学习内容总结

第九章继承

  • 1.创建子类。

    • 子类与父类的关系。子类是父类的其中一种。
    • 派生操作在子类中加保留字extends实现。
    • 子类的实例化并不依赖于父类的实例化。
  • 2.protected修饰符。(为了让子类能够访问并且不违反封装性原则)
    • 父类中的变量和方法被声明为protected可见性时,子类就可以使用。
    • UML图中,protected成员前加#。
    • 父类的构造方法,子类不能继承(除非用super引用)。
  • 3.super引用。
    • super引用可以调用父类的构造方法。
    • super引用调用父类构造方法的操作只能在子类中执行,并且必须是在第一行执行。
  • 4.多继承。
    • 单继承:子类只能有唯一的父类。
    • java语言的设计者明确决定不支持多继承,以防出现父类的方法同名的情况。
    • 作为替代多继承的方法,依赖接口。一个java类只能由一个父类派生,但可以实现多个接口。
  • 5.子类和父类有相同的方法名和签名时,子类方法将重写父类方法,子类方法优先。
    • 子类不能重写final方法。
  • 6.影子变量。
    • 子类父类变量名可以同名,这种定义是合法的,但是不提倡。
  • 7.类层次结构。
    • 从一个父类派生出的子类,还可以是它自己子类的父类。
    • 多个子类可以从一个父类派生。
    • 子类个数和类层次数都没有限制。
    • 同一个父类的两个子类,称为同胞。两者没有继承关系。(可以理解为同胞兄弟,hhh。)
    • 公共特征保持在尽可能高的类层次级上。
    • 继承机制具有传递性。有可能子类的特性不是来自于父类,而是来自于父类的父类或者,父类的父类的父类等等。(也就是祖先类。)
    • 情况不同,最佳的类层次结构不同,类层次结构不是一成不变的。
  • 8.Object类。
    • Java中所有的类归根结底都由Object类派生,如果没有extends,则默认从Object类派生。
    • Java成粗的每一个类都继承toString方法和equals方法。
  • 9.抽象类和抽象方法。
    • 抽象类通常含一个或多个尚未定义的抽象方法,不能被实例化。
    • 抽象类与接口的不同是:①抽象类可以含有非抽象方法。②除了常量之外还可以声明数据。
    • abstract修饰符将一个类声明为抽象类。
    • 抽象类在类层次结构中充当占位符。
    • 抽象类中的每一个抽象方法都必须使用abstract修饰符,但抽象类不必一定包括抽象方法。
    • 在UML类图中,抽象类的类名用斜体表示。
    • 抽象类在类层次上的定义位置不受限制,但一般在较高的类层次上。(存在从非抽象父类派生出抽象类的可能)
    • 由抽象类派生的子类必须重写所有父类的抽象方法,否则该子类仍未抽象方法。
    • 抽象方法不使用finalstatic修饰符。
  • 10.接口层次结构。
    • UML类图中,用空心箭头线表示接口之间的继承关系。
    • 父接口用于派生子接口时,子接口继承了父接口的所有抽象方法和常量,任何实现子接口的类都必须实现所有的抽象方法。
    • 接口间的继承问题不存在可见性问题,因为一个接口的所有成员都是公共的。
    • 接口不能用于派生新类,类不能用于派生接口。(接口只能实现)。
  • 11.可见性。
    • 在子类中,即使不能直接引用父类成员,但是父类成员也总是存在的,可以被间接地引用。
  • 12.类间继承关系的设计。
    • 继承关系小结。
    • final修饰符可用于限制继承。
    • final修饰符可用于方法也可用于类。(方法不能在任何派生类中重写,类不能成为其他类的父类。)

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

  • 问题1:三种可见性修饰符的可见性比较
  • 问题1解决方案:private可见性最严格,public可见性最弱,protected可见性位于两者之间。
  • 问题2:super.message();super(message);的不同
  • 问题2解决方案:super.message()是调用父类的方法并且这里的message是方法名,super(message)是调用父类的构造方法并且这里的message是形参名。
  • 问题3:书中所说的抽象类通常含一个或多个尚未定义(没有实现代码)的抽象方法抽象类不必一定包含抽象方法是否相矛盾。
  • 问题3解决方案:不矛盾。详情见Java中,抽象类可以不含抽象方法吗

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

  • 问题1:出现红线的原因

  • 问题1解决方案:该类是子类,如果子类创建构造方法的话,那么需要用super语句把父类的构建方法也输入,(主要是把父类的对象也初始化),否则会有错误。并且一定要注意,super语句要放在第一行。

代码托管

上周考试错题总结

1.The "off-by-one" error associated with arrays arises because

  • A . the first array index is 0 and programmers may start at index 1, or may use a loop that goes one index too far
  • B . the last array index is at length + 1 and loops may only iterate to length, missing one
  • C . the last array element ends at length - 1 and loops may go one too far
  • D . programmers write a loop that goes from 0 to length - 1 whereas the array actually goes from 1 to length
  • E . none of the above, the "off-by-one" error has nothing to do with arrays
  • 答案:A ;我选的:D
  • 分析:数组的合法索引为0到X- 1,差一错误,因为程序员将编写代码来尝试访问索引1到X
  • 单词:1.array:数组。2.iterate:重复。3.element:元素。4.whereas:然而。

2.If an int array is passed as a parameter to a method, which of the following would adequately define the parameter list for the method header?

  • A . (int[ ])
  • B . (int a[ ])
  • C . (int[ ] a)
  • D . (int a)
  • E . (a[ ])
  • 答案:C ;我选的:E
  • 分析:这题意思是定义一个整型值数组,应该怎么声明。所以选C。
  • 单词:1.parameter:参数。

3.Given the following declarations, which of the following variables are arrays?

int[ ] a, b; int c, d[ ];

  • A . a
  • B . a and b
  • C . a and d
  • D . a, b and d
  • E . a, b, c and d
  • 答案:D ; 我选的:C
  • 分析:声明方式有四种模式:①int[] a,b ②int[] a ③int d[] ④int c,d[]
  • 单词:无

4.If a and b are both int arrays, then a = b; will

  • A . create an alias
  • B . copy all elements of b into a
  • C . copy the 0th element of b into the 0th element of a
  • D . return true if each corresponding element of b is equal to each corresponding element of a (that is, a[0] is equal to b[0], a[1] is equal to b[1] and so forth) and return false otherwise
  • E . return true if a and b are aliases and return false otherwise
  • 答案:A ;我选的:B
  • 分析:“=”是赋值运算符。分两种情况:①a和b如果是两个变量,则把右边变量的值赋给左边变量。②a和b如果是两个数组,导致a和b都在存储器中引用相同的数组,因此它们现在是彼此的别名。
  • 单词:1.alias:别名。2.corresponding:对应的。

5.Arrays have a built in toString method that returns all of the elements in the array as one String with "\n" inserted between each element.

  • A . true
  • B . false
  • 答案:B ;我选的:A
  • 分析:数组是对象,因此它们是从Object类继承的。Object类有一个toString方法。但是,Object类的toString方法不返回存储在对象中的值,而是返回引用变量的值。因此,数组上使用的toString将不会返回数组中存储的值,而是返回一个无意义的字符集。(Object类在第九章的继承中有提到。)
  • 单词:1.insert:插入。

6.So long as one is only accessing the elements of an ArrayList, its efficiency is about the same as that of an array. It‘s only when one begins to insert or remove elements towards the front portion of an ArrayList that its efficiency deteriorates.

  • A . true
  • B . false
  • 答案:A ;我选的:B
  • 分析:只要一个只访问数组的元素,效率就与数组相同。但是,当对数组列表的前面部分进行插入或删除时,也就是当大量元素复制必须发生时,降低其效率。
  • 单词:1.the front portion of an ArrayList:数组列表的前部。

点评模板:

  • 博客中值得学习的或问题:

  • 代码中值得学习的或问题:

点评过的同学博客和代码

  • 本周结对学习情况

    • 20172326
    • 结对学习内容
      • 第九章继承
  • 上周博客互评情况

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

  • 本周的pp作业是要求画UML类图,这是第一次画UML类图,纪念一下第一幅UML类图(虽然看起来很简单!)

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 30篇 400小时
第一周 182/182 1/1 10/10
第二周 458/640 1/2 15/25
第三周 469/1109 2/4 18/43 学会IDEA的使用和调试,学会jdb调试。
第四周 1536/2645 1/5 24/67
第五周 980/3625 1/6 25/92
第六周 870/4495 1/7 16/108
第七周 247/4742 1/8 14/122
  • 计划学习时间:20小时
  • 实际学习时间:14小时
  • 改进情况:这周还有一个实验,此博客交时,还没有开始学习实验三实验四与实验五,因此博客篇中并没有算实验的博客,学习时间也没有加学习实验的时间。因为本周的继承,不难理解,并且没有很多的代码需要敲。所以花费的时间较少,代码的增加量也较少。

参考资料

原文地址:https://www.cnblogs.com/yu757503836/p/8867480.html

时间: 2024-11-03 17:50:43

20172332 2017-2018-2 《程序设计与数据结构》第七周学习总结的相关文章

《程序设计与数据结构》第九周学习总结

学号 20172326 <程序设计与数据结构>第九周学习总结 教材学习内容总结 图:图(Graph)是一种复杂的非线性结构,在图结构中,每个元素都可以有零个或多个前驱,也可以有零个或多个后继,也就是说,元素之间的关系是任意的.与树的区别在于树中的一个结点只有一个前驱,也就是说只有一个父结点.但图中的顶点(结点)是没有这种限制关系的. 无向图:边为无需结点对的图.也就是说,现有两个顶点A.B.(A,B)与(B,A)效果相同.当两个顶点之间有边连接,也就是说这两个顶点是邻接的,也称作邻居.一个顶点

20172305 2017-2018-2 《程序设计与数据结构》第一周学习总结

20172305 2017-2018-2 <程序设计与数据结构>第一周学习总结 教材学习内容总结 本书的第一章简单的介绍了计算机和JAVA的历史,基础内容很多,代码的讲解还没用正式进入,本周一直在做敲代码的准备,简单敲了老师给的"Hello World!"以及书后的PP1.3.PP1.4等简单的小程序. 教材学习中的问题和解决过程 问题1:三种不同类型的错误,运行错误和逻辑错误的混淆 问题1解决方案:针对EX1.20的"希望做加法时却做里乘法"进行了网上

20172314 2017-2018-2 《程序设计与数据结构》第一周学习总结

20172314 2017-2018-2 <程序设计与数据结构>第一周学习总结 教材学习内容总结 本书第一章为计算机系统概述,前面是一些计算机相关的基础知识,让我对计算机有了一个总体的认识,不再是一片空白了,对主存储器和CPU影响深刻,主存储器用于保存程序和数据,CPU执行程序指令.在接下来的Java编程语言与程序开发部分,开始看的时候有点迷茫,不是很理解,后来先按照作业中附带的流程完成一些代码托管之后,接触了完整的简单的程序之后,再回过头来看书,看到的一些陌生的名词在脑海中就有了实际的对应,

20172317《程序设计与数据结构》第一周学习总结

20172317 2017-2018-2 <程序设计与数据结构>第一周学习总结 教材学习内容总结 重新温习了一遍计算机的基础 总算了解了局域网广域网因特网万维网这些东西之间的区别了 通过URL的例子知道了网址各个部分的含义 对Java编程语言和程序开发有了一个粗浅的了解 教材学习中的问题和解决过程 问题:练习题SR1.13出现了答案与题目不相符的情况 问题解决方案:题中有个选项是"网卡",答案中没有,反而有个题目没有的选项"调制解调器"(俗称"

20172322 2017-2018-2 《程序设计与数据结构》第二周学习总结

20172322 2017-2018-2 <程序设计与数据结构>第二周学习总结 教材学习内容总结 了解了print与println的区别 了解了字符串的拼接可以用+来完成 了解了转义字符的使用 学会了使用赋值 学会使用部分算术运算符 学会了使用Scanner来实现交互性 教材学习中的问题和解决过程 问题1:在最初接触赋值时对foalt和double的赋值范围不了解 问题1解决方案:使用万能的度娘后看到一个高赞答案后有了了解 问题2:在提前预习时看到2.7图形后敲入的代码无法执行 问题2解决方案

20172328《程序设计与数据结构》第二周学习总结

20172328李馨雨<程序设计与数据结构>第二周学习总结 又到周五,李馨雨同学要开始写博客了.让我们开始吧!(????) 教材学习内容总结 1.首先是String类定义的字符串,然后是print和println的区别.转义字符的学习.(让我印象深刻的\b[回车符]在字符串结尾不显示哈哈,及其更新的\t[换行符],还有在课堂上真正明白了什么是回车.) 2.了解变量.常量.赋值语句.变量:保存数据的内存单元.常量:坚定自己不会变的数据!除非你用java的反射(有点复杂,改权限.去修饰符等等.没实

20172327 2017-2018-2 《程序设计与数据结构》第二周学习总结

20172327 2017-2018-2 <程序设计与数据结构>第二周学习总结 教材学习内容总结 字符串的拼接和转义序列的使用 变量的声明和使用 讨论语法及表达式的处理 定义数据转换类型和实现类型转换的机制 创建Scanner类 教材学习中的问题和解决问题 暂无 代码学习中的问题和解决过程 问题1:在提交过程中,突然遇到无法上传的情况 问题2解决方案:通过上网查找,输入git pull之后弹出一个编辑框,选择关闭之后,再次用git push就成功了. 问题2:在按照例题2.10打代码时,Jav

学号20172328《程序设计与数据结构》第九周学习总结

学号20172328<程序设计与数据结构>第九周学习总结 教材学习内容总结(异常和递归) 第11章:异常 1.[异常处理]: 一个异常:是一个定义非正式情况或错误的对象,由程序或者运行时环境抛出,可以根据需要捕获和处理. 错误:错误类似于异常,但是错误代表不可恢复的问题并且必须捕获处理. 2.[处理异常的三种方法]:①根本不处理异常②当异常发生时处理异常③在程序的某个位置集中处理异常. 3.[未捕获的异常]:如果程序中不处理异常,则程序将非正常的终止运行,并产生关于描述在何处发生什么异常的信息

20172326 《程序设计与数据结构》第九周学习总结

学号 20172326 <程序设计与数据结构>第九周学习总结 教材学习内容总结 异常(exception):定义非正常情况下或错误的情况的对象,由程序或运行时环境抛出,可根据需要进行相应的捕获处理. 异常与错误的区别:错误代表不可恢复的问题并且必须捕获处理.而异常可以忽视,或者使用try语句处理,或调用更高级的方法. 可检测异常与不可检测异常:可检测异常必须由方法捕获,或者必须在可能抛出或传递异常方法的throws子句中列出来.在方法定义的声明头中追加一条throws子句.不可检测异常不需要使

20172322 2017-2018-2 《程序设计与数据结构》第九周学习总结

20172322 2017-2018-2 <程序设计与数据结构>第九周学习总结 教材学习内容总结 异常 学会了使用try-catch来实现未捕获的异常的处理.可以使得异常被捕获进而不导致程序出现错误退出.使用try写入可能产生异常的语句,使用catch来编写在捕获异常后继续执行的代码(可以为空). "未捕获的异常"指在编译过程中不会被编译软件显示异常但是在运行时会出现异常导致程序直接退出,例如:"ArithmeticException"."In