第4周学习总结

20165226 2017-2018-3 《Java程序设计》第4周学习总结

教材学习内容总结

第五章 子类与父类

  • 类的继承知识点

    (1)java不支持多重继承,也就是说子类至多只能有一个父类

    (2)子类继承了其父类中不是私有的成员变量和成员方法,作为自己的成员变量和方法

    (3)子类中定义的成员变量和父类中定义的成员变量相同时,则父类中的成员变量不能被继承

    (4)子类中定义的成员方法,并且这个成员方法的名字,返回类型,及参数个数和类型与父类的某个成员方法完全相同,则父类的成员方法不能被继承。

  • jvm的执行过程

    (1)子类B 的构造方法被调用,实例化一个B对象,B对象的成员被初始化

    (2)jvm隐含的调用父类的构造方法,实例化一个A对象,A对象的成员被初始化。

    (3)由于A对象的printI()未被屏蔽,所以调用的A对象的printI()函数。

    那么,在这里A的成员函数当然是访问自己的成员变量了。

  • super关键字

    super关键字在java中的作用是使被屏蔽的成员变量或者成员方法或变为可见,或者说用来引用被屏蔽的成员变量和成员成员方法。super是用在子类中,目的是访问直接父类中被屏蔽的成员。

第六章 接口与实现

  • 使用关键字interface来定义一个接口
interface Printable {
   final int MAX=100;
   void add();
   float sum(float x,float y);
}
  • 接口表示方法

    • 圆形表示法
    • 构造型表示法

  • 一个类中需要在类声明中使用关键字implements声明该类实现一个或多个接口。如果实现多个需要用逗号隔开接口名。
  • 实现关系的UML图

  • abstract类vs接口

    • 都可以有abstract方法。
    • 接口只能有常量,不能有变量;abstract类有既有常量又有变量。
    • abstract类也可以有非abstract类方法,接口不可以。
  • 程序设计后之后,首先应当对接口的修改“关闭”。

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

  • 问题1:看到p115时,不禁想到java中如果创建一个子类的对象,那么父类的对象是否被创建了?
  • 问题1解决方案:通过查找资料,发现:不会,按理来说,子类继承父类的话,构造方法父类先执行,那么这个执行应该只是代码上的,对象的话应该是没有创建的。多态其中一条很明显的道理,父类引用指向子类对象。那么这个引用的话,应该只是代码上的引用。
  • 问题2:书上122页上提到super这个关键字,想到上一章提到的this,产生了疑问:superthis有什么不同?
  • 问题2解决方案:其实super.不是“东西”,说道super.自然会想到this.,有人把他们归为同类,其实他们大大不同
    • this:是一个真真实实对象,代表的就是当前对象,可以用 return this; 去返回一个对象。
    • super:不能一个对象,不是指向父类对象的意思,super只是修饰了他后边的内容,告诉JVM,后面这部分内容不是当前对象所属类的内容而已,若用return super,JVM是不允许的,是一种错误的语法。

```

public static void main(String args[]) {

Chilren b = new chilren();

Father c = b

System.out.println(b.age);

System.out.println(c.age);

}

输出

18

40


看到上面这段代码,这里并不是说内存中有两个对象 b 和 c ,内存中其实就只有一个 b对象 ,只是c 不仅有自己的实例 变量,同时也存在父类所定义的全部实例变量。

       所以可以得出结论:`在实例化一个子类的同时,系统会给子类所有实例变量分配内存,也会给他的父类的实例变量分配内存,及时父子类中存在重名的实例变量,也会两个都分配内存的,这个时候子类只是隐藏了父类的这个变量,但还是会给它分配内存,然后可以用super来访问属于父类的变量。`

- 问题3:有些不明白,实际上创建的是子类的实例,为什么调用的是子类的方法,父类的成员变量?
- 问题3解决方案:通过查找资料,得到以下解释

这是java多态性的表现,要深入理解的话得从内存方面去思考,创建的是子类对象,但是指针类型是父类的,它能指向的内存块是父类应能对应的内容。当你把A类得Area()方法删除时,a指向的内存块里没有Area方法,或者说它指向的这个对象虽然有这个方法,但是这个指针却是没法去访问该方法的, 所以出现无法访问的情况。

- 问题4:教材121中`如果子类如下定义computer方法,是否属于重写继承的computer方法的`通过编译运行,结果是

17.0

20

为什么不属于重写computer方法,编译无错误呢?
- 问题4解决方案:子类在重写可以继承的方法时,完全可以按照自己的意图编写新的方法体,以便体现重写方法的独特的行为。

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

- 问题1:编译之后,运行时,系统出现`错误: 找不到或无法加载主类 Example5_2`

![](https://images2018.cnblogs.com/blog/1047870/201803/1047870-20180320154945293-45101630.png)

- 问题1解决方案:重新在**src**目录中编译了一次,再运行
- 问题2:运行Example5_5.java文件时出现了‘17.0   20‘的结果

![](https://images2018.cnblogs.com/blog/1047870/201803/1047870-20180320165826238-1007782844.png)

- 问题2解决方案:将Example5_5.java的子类中程序

float computer (float x,float y,double z) {

return x-y;

}

改成

float computer (float x,float y) {

return x*y;

}

- 问题3:运行书中122例七结果却如下图

![](https://images2018.cnblogs.com/blog/1047870/201803/1047870-20180320175117334-714611902.png)

- 问题3解决方案:vi了以下代码,发现其中次序有所颠倒,于是将其改成

float resultOne = aver.f();

float resultTwo = aver.g();

```

再进行编译运行,结果正确。

注:当super调用被隐藏的方法时,该方法中出现的成员变量时被子类隐藏的成员变量或继承的成员变量

  • 问题4:运行书上例13时出现了以下状况

  • 问题4解决方案:通过编译Application.java这个文件,再java Application,结果成功运行
  • 问题5:运行第五章课后习题时出现如下图所示问题

  • 问题5解决方案:认真校对代码后发现将println拼写成了pritnln,更改过后顺利运行

    代码托管

上周考试错题总结

  • 错题1:表达式0xaa|0x55的值

    - 原因:最后的结果仍应换成十六进制

    - 总结:在运算过程中,应注意进制

  • 错题2:表达式-2>>>1的值

    - 原因:没区分>>>>>

    - 总结:>>>是无符号右移,即无论正负数,右移之后符号位均补0,-2的二进制无符号右移一位之后为0111 1111 1111 1111 1111 1111 1111 1111,即2^31-1。

  • 错题3:下列与3*4的值相等的是

    - 原因:关于运算符的运算先后没弄清楚

    - 总结:3*4即3左移两位。^在Java中表示亦或。

  • 错题4:观察下列方法的定义,则该方法的返回类型为 ReturnType method(byte x, double y) {    return (short)x/y*2; }
    • 原因:在程序中对精度不敏感。
    • 总结:short将byte类型的x强制转化为short类型,但y的精度更高,所以返回类型为double。
  • 错题5:short和Float都属于基本数据类型。
    • 原因:Float是float提供的封装类,不是基本数据类型。
    • 总结:要看清是大写还是小写。
  • 错题6:“字符类型”中的“字符”指Unicode表中的一个字符。
    • 原因:概念不清楚
    • 总结:应多看书,从书中寻找答案。

结对及互评

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

    • 要素全面
    • 很认真细致
    • 排版简介美观
  • 代码中值得学习的或问题:
    • 代码中文件分类简洁
    • 很认真

点评过的同学博客和代码

  • 本周结对学习情况

    • 20165230
    • 结对照片

    • 结对学习内容
      • 学习如何使用jdb,在jdb上进行代码调试

其他

通过这周的考试,发现自己有很多地方不足,特别是在编程这种实践型的操作的时候,显得无从下手,有些无力,其实理论知识和动手操作是两码事,平时应该多动手编程,而不仅仅只是敲书上的代码

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 30篇 400小时

| 第四周 | 1105/1300 | 1/2 | 30/90 | |

尝试一下记录「计划学习时间」和「实际学习时间」,到期末看看能不能改进自己的计划能力。这个工作学习中很重要,也很有用。

耗时估计的公式

:Y=X+X/N ,Y=X-X/N,训练次数多了,X、Y就接近了。

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

  • 计划学习时间:30小时
  • 实际学习时间:18小时
  • 改进情况:

(有空多看看现代软件工程 课件

软件工程师能力自我评价表)

参考资料

原文地址:https://www.cnblogs.com/musea/p/8626226.html

时间: 2024-10-12 11:34:07

第4周学习总结的相关文章

《数据结构与面向对象程序设计》第四周学习总结

20182304 2019-2020-1 <数据结构与面向对象程序设计>第四周学习总结 教材学习内容总结 1.本章我们学习了使用并编写我们自己的类:类中有与类同名的构造方法,也可以有set,get,toSring与自己定义的方法.实例化一个对象,可通过该对象使用类里的所有方法.实例数据是每次创造一个实例后自动生成新的内存空间的变量 2.uml类图 :每个类可能包含三部分内容:类名.属性.操作(方法).UML类图有属于自己的语法,变量的类型名在变量名的后面,它们之间用冒号作为分隔符,方法的+和-

20182306 2019-2020-1 《数据结构与面向对象程序设计》第五学习总结

20182306 2019-2020-1 <数据结构与面向对象程序设计>第五学习总结 教材学习内容总结 尽量简单的总结一下本周学习内容 尽量不要抄书,浪费时间 看懂就过,看不懂,学习有心得的记一下 教材学习中的问题和解决过程 问题1:XXXXXX 问题1解决方案:XXXXXX 问题2:XXXXXX 问题2解决方案:XXXXXX ... 代码调试中的问题和解决过程 问题1:XXXXXX 问题1解决方案:XXXXXX 问题2:XXXXXX 问题2解决方案:XXXXXX ... 代码托管 (stat

20182322 2019-2020-1 《数据结构与面向对象程序设计》第四周学习总结

教材学习内容总结 1.编写类与方法(构造方法的结构和用途) 2.实际参数与形式参数.public与private.return与void的区别与含义. 3.UML类图的含义与形式 4.静态类(Math类)静态变量.静态方法 5.类间关系(依赖关系.聚合关系.继承关系) 6.接口的使用,能够在某个类中实现接口的方法(Comparable.Iterator) 7.软件活动开发.方法设计.方法重载.测试(黑盒测试.白盒测试) 教材学习中的问题和解决过程 问题1:toString与return返回的值的

20182335 2019-2020-1 《数据结构与面向对象程序设计》第四周学习总结

教材学习内容总结 1.继承的基本语法与用法. 2.利用UML类图表示继承关系. 3.在具体编写类的时候,先是数据声明再是方法声明. 4.toString方法用println或print或字符串连接会自动调用. 5.每创建一个对象.都会为类中声明的变量建立新的内存空间. 6.UML图一些基础使用方法. 7.对象应该是自管理的,既对象的实例数据应该仅由该对象来修改,这就构成了封装. 代码调试中的问题和解决过程 问题1:测试代码出现错误 问题1解决方案:junit的方法名必须是textxxx或xxxt

20182332 2019-2020-1 《数据结构与面向对象程序设计》第1周学习总结

20182332 2019-2020-1 <数据结构与面向对象程序设计>第1周学习总结1 教材学习内容总结 1.配置linux 虚拟机.java环境. 2.理解面向对象程序设计,包括属性.方法.封装等概念. Java基本结构,环境变量配置,集成开发环境. JAVA文件编译过程: 1.源文件由编译器编译成字节码(ByteCode) 2.字节码由java虚拟机解释运行. git命令: git init 创建本地版本库: git clone 与远程仓库建立联系: git add .将当前目录下文件添

《数据结构与面向对象程序设计》第1周学习总结

学号 2019-2020-2314 <数据结构与面向对象程序设计>第1周学习总结 教材学习内容总结 1.计算机系统是由软硬件组成的 2.java程序的结构组成(注释.标识符和保留字等) 注:java是大小写敏感的,大写和小写是有区别的 3.程序开发所包含的内容(程序设计语言的等级.编辑器.编译程序.解释程序.开发环境和语法语义) 4.在开发软件的过程中遇到问题时的解决步骤:理解问题.设计方案.考虑方案的选择并优化方案.实现方案.测试方案并修改存在的任何问题. 教材学习中的问题和解决过程 问题1

20182329 2019-2020-1 《数据结构与面向对象程序设计》第1周学习总结

20182329 2019-2020-1 <数据结构与面向对象程序设计>第1周学习总结 教材学习内容总结 git代码托管代码 Java的基本编程 jdb代码调试 教材学习中的问题和解决过程 问题1:在课本自学过程中,有一题是Java中有什么是不可能被识别的,我做错了一道(12345)可以被识别. 问题1解决方案:后来询问学长数字不与命令相匹配时不是有效的标识符,且标识符不能以数字为开头. 问题2:在自己对于课本代码编译时,发现自己main处显示错误 问题2解决方案:一开始我以为是我main的方

《数据结构与面向对象程序设计》第01周学习总结

目录 学号20182323 2019-2020-1 <数据结构与面向对象程序设计>第01周学习总结 教材学习内容总结 教材学习中的问题和解决过程 代码调试中的问题和解决过程 代码托管 上周考试错题总结 结对及互评 点评模板: 点评过的同学博客和代码 其他(感悟.思考等,可选) 学习进度条 参考资料 目录 学号20182323 2019-2020-1 <数据结构与面向对象程序设计>第01周学习总结 教材学习内容总结 学习了java的历史与发展. 学习了一些软件工具,开发环境等. 掌握

20182327 2019-2020-1 《数据结构与面向对象程序设计》第二第三周学习总结

20182327 2019-2020-1 <数据结构与面向对象程序设计>第二第三周学习总结 教材学习内容总结 在第二章的学习中,首先学习了Java编程的基本格式,然后学会了定义.赋值.使用各种数据类型的变量,可以独立打印数据到屏幕上,最后掌握了如何使用Scanner类的一般使用方法. 从第三章中,我学到了由String.Math.Random等类创建对象(即实例化对象),如果要使用Java.long包以外的类,要使用import声明,最后枚举类型,包装类没有看懂. 教材学习中的问题和解决过程

# 20182333 2019-2020-1 《数据结构与面向对象程序设计》第2、3周学习总结

20182333 2019-2020-1 <数据结构与面向对象程序设计>第2.3周学习总结 教材学习内容总结 第二章 1.字符串的概念以及拼接. 2.println方法和print方法的用法和区别 3.转义序列的概念和用法. 4.变量常量和赋值语句的相关内容. 5.8个基本数据类型. 6.表达式的概念,算数.自增自减.赋值三种运算符以及运算符优先级. 7.数据类型转换的安全性以及三种技术. 8.Scanner类的应用. 第三章 1.创建对象,对象引用变量的声明和与初始化,别名. 2.Strin