20172330 2017-2018-1 《Java程序设计》第七周学习总结

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

教材学习内容总结

这一章主要是对继承的学习:

  • 继承是组织和创建类的基本技术,概念简单但影响重大,决定着面向对象软件的设计方法,并增强了已设计类在软件开发中的复用性。
  • 类建立了对象的特征和行为,但并没有为声明的变量预留内存空间;类是一种设计,而对象是该设计的具体实现。
  • 继承具有单向性。
  • 可见性修饰符用于控制对类成员的访问,这种控制也延伸到继承的过程中。但构造方法不会继承。
  • super引用是调用父类构造方法,也可以引用父类的其他变量和方法。
  • Java的继承方法称为单继承,而一些面向对象语言允许子类有多个父类,这种方法称为多继承,对需要用两种类描述对象时候是有用的。
  • 虽然一个Java类只能由一个父类派生,但是它可以实现多个借口,因而可以用一种特殊的方式与继承一个父类核心信息的类交互。
  • 方法重写是面向对象设计中的一个关键机制,允许两个有继承关系的对象按同名规则使用同名方法。.
  • 一个类的子类还可以是一个或多个其他类的父类,因此建立起类层次结构。
    1333040-20180422162505379-115298456.jpg
  • 在Java中,所有的类归根到底都由Object类派生。每一个类都继承toString方法和equals方法。
  • 抽象类在类层次结构中代表一般性概念。抽象类1通常含有一个或多个尚未定义的抽象方法,不能被实例化。
  • 由抽象类派生的子类必须重写所有父类的抽象方法,否则该子类依然是抽象类。
  • 继承的概念可以应用到接口,以便由一个接口派生到另一个接口。
  • 父类的私有成员也被子类继承,虽不能以成员名直接地访问这些私有成员,但可以间接地访问。

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

  • 问题1:super的引用,课本上对此的解释并没有很多
  • 问题1解决方案:于是在百度之后,对于原文的一句话记忆犹新
    ·this通常指代当前对象,super通常指代父类·
    如果你想引用父类的某种东西,则非super莫属,主要作用为:
    1:主要存在于子类方法中,用于指向子类对象中父类对象。
    2:访问父类的属性
    3:访问父类的函数
    4:访问父类的构造函数
    super只能在有对象的前提下使用,不能在静态上下文使用。
  • 《java中super的用法》
  • 《super的具体用法》

  • 问题2:三种可见性修饰符的了解、
  • 问题2解决方案:百度后对彼此的用途有了了解
    1333040-20180422164941961-1701292497.png
    由此可以得出private可见性最严格,public可见性最弱,protected可见性位于两者之间

  • 《三种可见性修饰符的对比》

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

  • 问题1:在定义MonetaryCoin类的时候,因为涉及硬币面值刚开始在定义时用了int型,后来因为存在0.5的存在,导致出了问题
  • 问题1解决方案:在我将定义修改之后问题得到解决
    1333040-20180422211742096-756909806.png

代码托管

1333040-20180422190729120-1908444001.png

1333040-20180422190739175-1588689062.png

上周考试错题总结

  • 1.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都在存储器中引用相同的数组,因此它们现在是彼此的别名。

  • 2.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
    分析:声明方式有四种模式:①int[] a,b ②int[] a ③int d[] ④int c,d[]

  • 3.In Java, an array can only store one type of data. For instance, you cannot create an array that stores both double and String values.
    A . true
    B . false
    分析:数组被称为同构类型。这意味着存储在阵列中的值的类型必须对每个元素都是相同的。类型由声明决定。所以,int x只让x成为int值的数组。所以,没有数组可以同时存储双精度数和字符串。

  • 4.Consider the array declaration and instantiation: int[ ] arr = new int[5]; Which of the following is true about arr?
    A It stores 5 elements with legal indices between 1 and 5
    B It stores 5 elements with legal indices between 0 and 4
    C It stores 4 elements with legal indices between 1 and 4
    D It stores 6 elements with legal indices between 0 and 5
    E It stores 5 elements with legal indices between 0 and 5
    分析:数组的实例化了一个int值,表示它们的大小,或者它们可以存储的元素的数量。arr可以存储5个元素。此外,所有数组从索引0开始,然后到索引大小- 1,因此arr的法律索引为0到4。

  • 5.If int[ ] x = new int[15]; and the statement x[-1] = 0; is executed, then which of the following Exceptions is thrown?
    A IndexOutOfBoundsException
    B ArrayIndexOutOfBoundsException
    C NegativeArraySizeException
    D NullPointException
    E ArithmeticException
    分析:数组索引超出范围,因为数组索引只能在0到14之间。-1是一个非法的指数,因为它是越界的。一个人可能期望答案是C,但是如果一个数组被用一个负数的元素来声明,那么就会抛出NegativeArraySizeException,比如int[] x = new int[-5];

  • 6.The statement int[ ] list = {5, 10, 15, 20};
    A adds 4 int values to array list
    B initializes list to have 20 int values
    C initializes list to have 4 int values
    D declares list but does not initialize it
    E causes a syntax error because it does not include "new int[4]" prior to the list of values
    分析:如果一个数组实例化了它要存储的值列表,那么它就不需要用新的保留字来实例化。因此,list = {5, 10, 15, 20};将已初始化的5、10、15、20的值组成4个int值数组。注意,这个数组是一个4个值的数组,因此,list[n]对于任何n以外的值(0、1、2或3)都将导致抛出异常。

  • 7.To declare a three-dimensional int array called threeD, which of the following would you use?
    A int[3] threeD;
    B int[ , , ] threeD;
    C int[ ][ ][ ] threeD;
    D int [ [ [ ] ] ] threeD;
    E int[ ] threeD[3];
    在Java中,只能声明一维数组。要创建一个二维数组,必须将其声明为数组数组。三维数组是数组数组的数组。正确的表示法是在序列中使用多个[]标记来声明数组的类型,就像在二维数组或int[][]中使用一个三维数组那样。

结对及互评

点评模板:

  • 博客中值得学习的或问题:
    • 图片和文字相结合,方便理解。
    • 增加了博客中的目录,方便查看,同时样式进行了更新,显得更加美观
    • 阅读了许多资料,使得博客更有说服力。
  • 代码中值得学习的或问题:
    • 在做实验二时他采用了较为简便的方法,并对不理解的地方有了自己的尝试。
    • commit依旧很详细,有条理性。

点评过的同学博客和代码

  • 本周结对学习情况
    • 20172333
    • 结对学习内容
      • 学习第九章pp项目。
      • 学习继承的具体内容
      • 对于实验二一起进行探讨。

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

这周相较于上周的课后习题有所简单,但还是应该花费很多时间去课本,只有把课本知识搞懂,才能更好的去做项目。

学习进度条

代码行数(新增/累积)博客量(新增/累积)学习时间(新增/累积)重要成长
目标5000行30篇400小时
第一周180/1802/220/25
第二周312/4142/420/45
第三周557/9711/525/70
第四周1217/22422/744/114
第五周734/29761/824/138
第六周523/35091/920/158
第七周697/42061/1024/182

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

  • 计划学习时间:20小时

  • 实际学习时间:24小时

  • 改进情况:

这周对于课后练习做的没有那么吃力,但还是存在一些对于类的编写的问题,希望继续加油。

参考资料

转载于:https://www.cnblogs.com/linanlalala/p/8907678.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值