20165223 《JAVA程序设计》第四周学习总结
20165223 《JAVA程序设计》第四周学习总结
教材学习内容总结
第五章要点
- 子类与继承
- 成员变量的隐藏和方法重写
- super关键字
- 继承与多态
- abstract类与abstract方法
第六章要点
- 接口与实现
- 接口回调
- 接口与多态
- 面向接口编程
教材学习中的问题和解决过程
一、重要知识点
子类(subclass)
- 定义:由继承得到的类
- 关键字
extends
:
class 子类名 extends 父类名 {
...
}
- 继承性:从父类处继承而来
父类(superclass)
- 定义:被继承的类,超类
Object是所有类的祖先
除Object类外,所有类只能有一个父类,但能有多个或没有子类
如无extends声明,这个类被默认为Object的子类
子类从父类处继承来的方法可以操作未继承的变量
is-a
:子类与父类具有完全相同的接口,即子类与父类是完全相同的类型is-like-a
:子类中添加了新的接口元素,即扩展了接口,父类无法访问新添加的方法。此时导出类is like a 基类super关键字:操作被隐藏的成员变量和方法、调用父类的构造方法
final关键字:修饰类、成员变量、方法中的局部变量
类的UML图画法
- 属性的表示:<可见性><属性名称>:<类型>={缺省值,可选}
- 方法的表示:<可见性><方法名称>(<参数列表>):<类型>
- 可见性:"-"表示private、"+"表示public、"#"表示protected
继承关系UML画法
- 继承也叫作泛化(Generalization),用于描述父子类之间的关系,父类又称为基类或者超类,子类又称作派生类。在UML中,泛化关系用带空心三角形的实线来表示
- 继承也叫作泛化(Generalization),用于描述父子类之间的关系,父类又称为基类或者超类,子类又称作派生类。在UML中,泛化关系用带空心三角形的实线来表示
抽象继承关系UML画法
- 在UML中,抽象类无论类名还是抽象方法名,都以斜体的方式表示,因为这也是一种继承关系,所以子类与父类通过带空心三角形的实线来联系
- 子类中覆盖了父类的abstract方法,方法名再次出现
实现关系UML画法
- 在接口中通常没有属性,而且所有的操作都是抽象的,只有操作的声明没有操作的实现
- UML中用与类类似的方法表示接口。即在方法上有
<<interface>>
表示这是一个接口 - 接口一般没有属性,所以没有中间层,有属性也都是常量
二、疑难问题
- 子类为什么要重写,重写的意义是什么?
实际应用中,用得最多的一种运行时多态,就是用只知道父类型(可能是类,更多的可能是接口)的定义,这样只能调用父类型的方法(这在大型软件里很常用,父类型和子类型可能是不同的人编写的,以利于协作编程)。
因此,如果子类型重写了父类型的同名方法,那么只知道父类型的定义就可以调用子类型的方法了,这体现了软件复用。
——来自百度知道
因此通过子类的重写,可以隐藏已继承的方法(方法覆盖),便于之后调用子类型的方法,体现了类的复用,要明白多态的含义
super关键字和this关键字的差别?
- this代表的是当前对象,调用当前类的方法或变量;
- super调用的是父类的方法或变量,在子类中通过super关键字来调用,可操作被隐藏的成员变量和方法、构造方法。
继承和多态的区别?
- 继承:就是子类继承父类,使子类具有父类的各种属性和方法,好处就是避免多余的代码出现
- 多态:就是一个接口,使用不同的实例去执行不同的操作,好处就是增强程序的可扩展性及可维护性搜索,使代码更简洁
面向接口编程和面向抽象编程的差别?
- 面向接口编程,是指面向超类型编程,比如抽象类和接口,或super class,这样的话,可以按照约定进行获取数据,不用关心内部处理的细节,封装了业务逻辑,维护了系统的稳定性和系统间的低耦合性
- 面向抽象编程,是指面向抽象角色编程,而不面向具体类编程。好处是程序可以灵活地增加功能,良好的解耦性、可扩展性,符合“开-闭”准则
区别:抽象类和接口都是超类型,抽象类是对事物的抽象,接口是对行为的抽象。这样,在需要使用事物抽象时使用抽象类,在需要使用行为抽象时使用接口
- 几个概念的总结和关系
代码调试中的问题和解决过程
- 编译时遇到如图错误,但代码并没有出错
后来发现其实这只是一个提示,提示所用的类中有已过时的类,实际上还是可以正确执行的
出现这个提示的本质原因是:在你的源代码中,使用JDK中的类的时候,调用了已经过时的方法。所谓过时方法,是有些没有真正实现的方法,或存在潜在问题的方法。这些方法一般情况下,目前的JDK还支持,但在未来的某个版本中,可能就会取消的。所以,在本地使用的代码不必担心这个问题;要移值到其它计算机的程序必须要解决这个问题。这些过时的方法在JDK的更高版本中,绝对大多数提供了替换方法,少部分是要放弃了。想改好程序,就要找到能够替代的方法,来修改代码。能替代的方法查阅API文档就能看到,在方法目录中,过时的方法有“已过时”的说明,在方法明细里能看到被哪个方法代替了。
——来自百度知道
代码托管
详见码云代码链接:https://gitee.com/BESTI-IS-JAVA-2018/20165223cn/tree/master/src/
上周考试错题总结
详见博客:
week3蓝墨云测试总结
week4测试补交与总结
感悟与总结
已经是第四周的学习了,这一周更深入地学习了类的知识,在敲代码的过程中也越来越清晰的明白了各种概念的含义。现在体现出来的一个重要的问题就是,在通过教材学习的时候敲代码可以慢慢理解代码含义,但在自己编写程序的时候,却经常搞不清楚该如何使用各种类,如何调用,以及各种关键字的含义,这都说明了我还是不够熟练掌握这些知识,希望在之后的努力下会做得好些。
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 3000行 | 30篇 | 400小时 | |
第一周 | 178/200 | 1/2 | 20/20 | 基础 |
第二周 | 368/200 | 2/4 | 20/20 | 基础 |
第三周 | 865/200 | 3/7 | 20/20 | 逐渐深入 |
第四周 | 920/200 | 2/9 | 20/20 | 逐渐深入 |
参考资料
20165223 《JAVA程序设计》第四周学习总结的更多相关文章
- Java程序设计第四周学习总结
1. 本周学习总结 1.1 尝试使用思维导图总结有关继承的知识点. 1.2 使用常规方法总结其他上课内容. 答:①String类是final类,不能定义String的子类. ② instanceof ...
- 杨其菊201771010134《面向对象程序设计(java)》第四周学习总结
<面向对象程序设计(java)> 第四周学习总结 第一部分:理论知识 1.类与对象 a.类(class)是构造对象的模板或蓝图.由类构造对象的过程称为创建类的实例: java中类声明的格式 ...
- 对于“2017面向对象程序设计(JAVA)第四周学习总结”存在问题的反馈
对于“2017面向对象程序设计(JAVA)第四周学习总结”存在问题的反馈 “这部分同学博文总结没有写,实验作业没有提交.”——1.关于博文作业.实验作业教学功能的正解:学习知识.暴露问题.衔接课上.2 ...
- 201871010106-丁宣元 《面向对象程序设计(java)》第四周学习总结
201871010106-丁宣元 <面向对象程序设计(java)>第四周学习总结 正文开头 项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-da ...
- 20155318 2016-2017-2 《Java程序设计》第九学习总结
20155318 2016-2017-2 <Java程序设计>第九学习总结 教材学习内容总结 学习目标 了解JDBC架构 掌握JDBC架构 掌握反射与ClassLoader 了解自定义泛型 ...
- 《Java程序设计》第二学习总结
<Java程序设计>第二学习总结 教材学习内容总结 类型 byte(字节) shot(短整型) int(整型) long(长整型) float(浮点型) double(双精度) char( ...
- 20145304 刘钦令 Java程序设计第二周学习总结
20145304 <Java程序设计>第2周学习总结 教材学习内容总结 java可区分基本类型和类类型(即参考类型)两大类型系统. 基本类型主要可区分为整数.字节.浮点数.字符与布尔. 整 ...
- 20145304 刘钦令 Java程序设计第一周学习总结
20145304<Java程序设计>第1周学习总结 教材学习内容总结 1995年5月23日,是公认的Java的诞生日,Java正式由Oak改名为Java. Java的三大平台是:Java ...
- 20145120黄玄曦 《java程序设计》 寒假学习总结
1和2.我对未来规划不多,我认为好好学习积累知识能帮助我应对未来的挑战,这是我的学习动力之一,此外,了解新知识满足好奇心也是我的主要的学习动力. 3.我认为专业课学习比公务员考试重要,我认为专业知识是 ...
- 201621123007 Java程序设计第一周 学习总结
第一周-Java基本概念 201621123007 <Java程序设计> 第一周学习总结 1. 本周学习总结 java是面向对象的一类语言,三大特征:封装性,继承性,多态性. jdk jr ...
随机推荐
- 非常详细的Docker学习教程
一.Docker 简介 Docker 两个主要部件: Docker: 开源的容器虚拟化平台 Docker Hub: 用于分享.管理 Docker 容器的 Docker SaaS 平台 -- Docke ...
- 《Effective C++》设计与声明:条款18-条款25
条款18:让接口容易被正确使用,不容易被误用 注意使用const,explicit,shared_ptr等来限制接口. 必要时可以创建一些新的类型,限制类型操作,束缚对象等. 注意保持接口的一致性,且 ...
- 组建自己的局域网(可以将PC机实现为服务器)
最近想要自己组建一个集群,并且可以通过外网访问,查了好些资料,终于成功了! 设备清单:笔记本1:(4g内存,500g硬盘),笔记本2:(12g内存,120g固态硬盘) (笔记本2上装有5台虚拟机,操作 ...
- AngularJS双向数据绑定
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- Day 4-5 序列化 json & pickle &shelve
序列化: 序列化是指把内存里的数据类型转变成字符串,以使其能存储到硬盘或通过网络传输到远程,因为硬盘或网络传输时只能接受bytes. 反序列化: 把字符转成内存里的数据类型. 用于序列化的两个模块.他 ...
- Microsoft Visual Studio Ultimate 2013密钥
Visual Studio Ultimate 2013 KEY(密钥):BWG7X-J98B3-W34RT-33B3R-JVYW9Visual Studio Premium 2013 KEY(密钥): ...
- mysql的主从复制
一.主从复制简介 二.主从复制原理 四.主从复制基本故障处理 五.延时从库 六.半同步复制 七.过滤复制 四.主从复制基本故障处理 SQL 线程为NO 一般情况下,因为主库一开始本来就有一些存在的库, ...
- Navicat 远程连接Docker容器中的mysql 报错:1251 - Client does not support authentication protocol 解决办法。
出现这个问题 首先进入 1.docker exec -it mysql02 bash //mysql02是mysql容器的别名 2.mysql -uroot -p 3.输入密码 4.进入my ...
- 设计模式笔记:简单工厂模式(Simple Factory)
1. 简单工厂模式简介 1.1 定义 简单工厂模式:定义一个Factory类,可以根据参数的不同返回不同类的实例,被创建的实例通常有共同的父类. 简单工厂模式:只需要一个Factory类. 简单工厂模 ...
- OSError: mysql_config not found
使用Python3开发一个管理平台,用MySQL数据库存放元数据.使用pip安装mysqlclient模块时出现“OSError: mysql_config not found”错误. 解决: # a ...