20145337《Java程序设计》第四周学习总结
20145337《Java程序设计》第四周学习总结
教材学习内容总结
继承与多态
继承
- 继承,避免多个类间重复定义共同行为
- 符合DRY(Don't Repeat Yourself)原则,多个类间出现重复的程序时,可改进为将相同的程序代码提升为父类
- 使用
extends关键字,private成员也会被继承,只不过子类无法直接存取,须通过父类提供的方法
多态
子类只能继承一个父类,子类父类之间存在
ISA的关系检查多态逻辑语法是否正确,方式是从“=”右边往左读;判断右边是不是一种左边(右边类型是不是左边类型的子类),如果不是就会编译失败。如果加上扮演(Cast)语法,编译程序会让程序代码通过编译,不过很有可能会扮演失败,执行时抛出ClassCastException的错误。
封装是继承的基础,继承是多态的基础
「用父类声明对象引用,用子类生成对象」就有了多态
多态就是使用单一接口操作多种类型的对象,例如
`public class RPG2 {
public static void main(String[] args) {
SwordsMan swordsMan = new SwordsMan();
swordsMan.setName("Justin");
swordsMan.setLevel(1);
swordsMan.setBlood(200);Magician magician = new Magician();
magician.setName("Monica");
magician.setLevel(1);
magician.setBlood(100); showBlood(swordsMan);
showBlood(magician);
}
static void showBlood(Role role){
System.out.printf("%s 血量 %d%n",role.getName(),role.getBlood());
}
}`
覆盖
- 子类中出现与父类一模一样的方法时,会出现覆盖操作。一般来说,当子类需要父类的功能,而功能主体子类有自己特有内容时,可以覆盖父类中的方法,这样,即沿袭了父类的功能,又定义了子类特有的内容。
- 父类中的私有方法不可以被覆盖,在子类覆盖方法中,继续使用被覆盖的方法可以通过super.函数名获取。
- 覆盖需要注意的是:覆盖时,子类方法权限一定要大于等于父类方法权限,并且静态只能覆盖静态。
抽象方法、抽象类
- 如果某方法区块中没有任何程序代码操作,可以使用abstract标示该方法为抽象方法,该方法不用撰写{}区块,直接“;”结束即可。类中若有方法没有操作,并且标示为abstract,表示这个类定义不完整,因此也就不能用来生成实例。Java中规定内含抽象方法的类,一定要在class前标示abstract,表示这是一个定义不完整的抽象类。
继承语法细节
- 在Java中有public、protected、private三个权限关键字,但实际上有四个权限范围:
| 关键字 | 类内部 | 相同包类 | 不同包类 |
|---|---|---|---|
| public | 可存取 | 可存取 | 可存取 |
| protected | 可存取 | 可存取 | 子类可存取 |
| 无 | 可存取 | 可存取 | 不可存取 |
| private | 可存取 | 不可存取 | 不可存取 |
- 如果想取得父类中的方法定义,可以在调用方法前,加上super关键字,重新定义的时候要注意,对于父类中的方法权限,只能扩大不能缩小。如果想执行父类中某构造函数,可以使用super()指定,但要注意的是,this()和super()只能选择其中之一调用,并且一定要在构造函数第一行执行。
- class前也可以加上final关键字,如果class前使用了final关键字定义,那么表示这个类是最后一个了,没有子类,不能被继承。同样,定义方法时,也可以限定该方法为final。
java.long.Object
- 定义类时未使用extends关键字指定继承任何类型,为继承java.lang.Object,Java中的所有对象,都满足“是一种”Object
Object c1 = "Justin";Object c2 = new Date();
- 任何类型的对象,都可以使用Object声明的名称来参考
- 对于不再有用的对象,JVM有垃圾收集机制,收集到的垃圾对象所占据的内存空间,会被垃圾收集器释放。执行流程时,无法通过变量参考的对象,就是GC认定的垃圾对象。
接口与多态
对于“定义行为”,在Java中可以使用interface关键字定义:
package cc.openhome; public interface Swimmer{ public abstract void swim(); }接口可以用于定义行为但不定义操作。类要操作接口,必须使用implements关键字。操作某接口时,对接口中定义的方法有两种处理方式,一是操作接口中定义的方法,二是再度将该方法标示为abstract.
操作接口则表示“拥有行为”,但不会有“是一种”的关系。Java中经常见到在接口中定义这类常数,称为枚举常数。事实上,在interface中,也只能定义public static final的枚举常数。在接口中枚举常数,一定要使用=指定值,否则就会编译错误。
接口可以继承别的接口,也可以同时继承两个以上的接口,同样也是使用extends关键字,这代表了继承父接口的行为。在JDK8之后,如果父接口中定义的方法有操作,也代表了继承父接口的操作。
教材学习中的问题和解决过程
对于这两章的学习,看的比较仔细,单纯机械的调试书上的代码,若有错误,也是因为粗心,并非语法错误
public class Role {
private String name;
private int level;
private int blood;
public void fight(){
}
public int getBlood(){
return blood;
}
public void setBlood(int blood){
this.blood = blood;
}
public int getLevel(){
return level;
}
public void setLevel(int level){
this.level = level;
}
public String getName(){
return name;
}
public void setName(String name){
this.name = name;
}
}
P178
import java.util.Arrays;
import java.util.Objects;
public class ArrayList {
private Object[] list;
private int next;
public ArrayList(int capacity){
list = new Object[capacity];
}
public ArrayList(){
this(16);
}
public void add(Object o){
if(next == list.length){
list = Arrays.copyOf(list,list.length *2);
}
list[next++] = o;
}
public Object get(int index){
return list[index];
}
public int size(){
return next;
}
}
代码调试中的问题和解决过程
问题一:对包的了解不够,机械的将教材上的代码敲到分立的.java文件中运行,显示找不到类或方法
- 解决过程:回顾第二章,将分立的代码放在共同的包内,就可以了
本周代码托管截图

其他(感悟、思考等,可选)
虽然在短短的周末安排两章的学习内容,有点多,所幸有所收获,虽然还有自主的编辑过JAVA代码,但“动手题”里提供了一些思路,确实有进步。计算机二级的考试题很简单,然根基不稳,再加上没有复习,所以C语言一直掌握的不好。当务之急,是提高学习的效率,光是看书、调试书上的代码,对我来说,应付考试尚可,自己编辑就难说。我会继续努力。
学习进度条
| 代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
|---|---|---|---|---|
| 目标 | 5000行 | 30篇 | 400小时 | |
| 第一周 | 200/200 | 2/2 | 20/20 | 了解JAVA环境 |
| 第二周 | 300/500 | 2/4 | 18/38 | 编写HelloWorld |
| 第三周 | 500/1000 | 3/7 | 22/60 | 了解类、封装 |
| 第四周 | 300/1300 | 2/9 | 30/90 | 继承与多态 |
参考资料
20145337《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 ...
随机推荐
- Liferay 6.2 改造系列之二十:修改默认添加用户权限及用户是否拥有个人站点的配置
1.修改默认添加用户权限为User,而非Powers User: 在/portal-master/portal-impl/src/portal.properties文件中有如下配置: # # Inpu ...
- 2016.8.14 HTML5重要标签以及属性学习
1.响应网格系统,这使得它很容易把元素放在行,并指定每个元素的相对宽度 . 要注意的是: 在使用网格布局系统之前,要不把布局的元素都添加到同一个<div>中,而且这个<div> ...
- loopback 03
使用微信开发前准备 微信公众开发者平台 注册开发者账号获取权限: 安装包: wechat, wechat-oauth 微信公众平台操作 登录之后,得到appID和appsecret 根据appID和a ...
- javascript优化--11模式(设计模式)02
策略模式 在选择最佳策略以处理特定任务(上下文)的时候仍然保持相同的接口: //表单验证的例子 var data = { firs_name: "Super", last_name ...
- wpf中手风琴控件Accordion编辑模板后控件不正常。
昨天有个网友Accordion控件从sl迁移到wpf时候显示不正常.也是就没有效果. 我也是sl做的比较多,wpf玩的少,Accordion模板里触发器,状态组调了一早上都没达到满意效果, 无奈只有百 ...
- 读书笔记和sprint总结
第八章 需求分析 主要是讲需求的分析,对于一个程序项目来说,我觉得,需求是这个项目的向导,他可以决定程序项目会发展成什么样子.书里面需求这里大致分为两个:软件需求和用户需求. 软件需求:我们不仅仅要 ...
- BestCoder Round #73 (div.2)
1001 Rikka with Chess ans = n / 2 + m / 2 1002 Rikka with Graph 题意:n + 1条边,问减去至少一条使剩下的图连通的方案数. 分析:原来 ...
- HDU-2844 Coins(多重背包)
Problem Description Whuacmers use coins.They have coins of value A1,A2,A3...An Silverland dollar. On ...
- 【BZOJ】2216: [Poi2011]Lightning Conductor
题意 给一个长度为\(n\)的序列\(a_i\),对于每个\(1 \le i \le n\),找到最小的非负整数\(p\)满足 对于任意的\(j\), \(a_j \le a_i + p - \sqr ...
- CF 2B.The least round way
题目链接 很久以前就见过此题,以前看了题解,然后今天写了写,写的真搓. #include <cstdio> #include <cstring> #include <st ...