20145212 《Java程序设计》第4周学习总结

教材学习内容总结

  • 第六章知识点:

    1.继承基本上就是避免多个类间重复定义的行为。

    2.子类继承父类,通过继承,我们可以避免类间的重复定义,子类与父类之间也会有“is-a”的关系,即子类是一种父类。

    3.继承中的is-a原则牵涉所写的代码弹性以及是否便于维护。

    4.继承中的构造函数:如果类有继承关系,在创建子类实例后,会先进行父类定义的初始流程,再进行子类中定义的初始流程。

    5.构造函数可以重载。

    6.在Java中,子类只能继承一个父类。

    7.final关键字:final变量的值不能被修改,即final定义可以理解为“最后一次定义”。

    8.定义类时,如果没有使用extends关键字指定继承任何类,则一定是继承java.lang.Object。

    9.垃圾收集:无法通过变量参考的对象被视为垃圾对象被JVM的垃圾收集机制处理。
  • 第七章知识点:

    1.操作接口:类通过使用implements关键字操作接口。

    2.使用interface关键字定义行为。

    3.类可以拥有两种以上的行为,可以在继承某个类的同时操作某些接口。

    4.接口可以继承别的借口,通过extends关键字代表继承父接口的行为。

    5.使用接口枚举常数只能定义为public static final。

    6.enum语法可以用于定义枚举常数。

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

在学习到书上的抽象类实例时,书中举得例子是通过先操作需求部分的内容来设计程序,使得本身看似不合理的需求得到满足。这一点放在Java中,就表现成对一个类的定义不完整的时候抽象的方法还是可以调用运行。这让我对Java的认知有了新的提升:有了这种抽象类我们可以实现一些“感觉上”不能被实现的问题。
我感觉书上对抽象类的概念和用法并没有很清晰,通过查阅资料我还得到了一下关于抽象类的规定:
  • 在实现抽象类时,必须实现该类中的每一个抽象方法,而每个已实现的方法必须和抽象类中指定的方法一样,接收相同数目和类型的参数,具有同样的返回值。
  • 抽象类不能被实例化,也就是不能用new关键字去产生对象。
  • 抽象方法只需声明,而不需实现。
  • 抽象类的子类必须覆盖所有的抽象方法后才能被实例化,否则这个子类还是个抽象类。

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

1.被提升为父类的例子,代码如下:

public class Role{
private String name;
private int level;
private int blood;
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;
}
}

2.在一开始使用继承时,我试着将书上的代码合到一起,却怎么样都不对,经过一行一行的检查我发现我在定义继承的时候加上了一句话:static Magician magician;导致后面找不到符号magician全部出错。删除了这行字之后,程序依旧没有成功,再次检查后发现我将Magician magician=new Magician()的Magician和magician之间多加了一个点,导致对象创建失败,程序出错。

成功的代码如下:

class Role{
private String name;
private int level;
private int blood;
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;
}
}
class SwordsMan extends Role{
public void fight(){
System.out.println("挥剑攻击");
}
}
class Magician extends Role{
public void fight(){
System.out.println("魔法攻击");
}
public void cure(){
System.out.println("魔法治疗");
}
}
public class RPG{
public static void main(String[] args) {
demoSwordsMan();
demoMagician();
}
static void demoSwordsMan(){
SwordsMan swordsMan=new SwordsMan();
swordsMan.setName("Justin");
swordsMan.setLevel(1);
swordsMan.setBlood(200);
System.out.printf("剑士:(%s,%d,%d)%n",swordsMan.getName(),swordsMan.getLevel(),swordsMan.getBlood());
}
static void demoMagician(){
Magician magician=new Magician();
magician.setName("Monica");
magician.setLevel(1);
magician.setBlood(200);
System.out.printf("魔法师:(%s,%d,%d)%n",magician.getName(),magician.getLevel(),magician.getBlood());
}
}

并且程序运行成功:

本周代码托管截图

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

这一星期的学习出现在书上的有很多都是专业术语,乍看上去有种什么都不会了的感觉,再加上个上星期的Java学习我还有很多不到位的地方,因此看着两章的时候我感觉很吃力,看了几遍书也没用完全弄懂某些地方。我想像以前那样通过对书上代码的实践更好的理解程序,却发现修改了几遍自己的程序之后,还是会有一些书上没有提到过的错误,这些错误有的是因为打出来的代码太长,不小心就犯了一些符号上的或者是多加了一个分号或者是名称大小写的错误,有的是因为我在凭着自己的理解打出来的时候多加了一些不该加的语句,还有一些是书上没有提到的错误,但是通过查阅资料可以解决。总而言之,通过几次这样的实践,我感觉对这章内容的理解进步了不少。

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 30篇 400小时
第一周 200/200 2/2 10/10
第二周 300/500 1/3 16/26
第三周 300/800 1/4 18/44
第四周 300/1100 1/5 18/62

参考资料

20145212 《Java程序设计》第4周学习总结的更多相关文章

  1. 20145213《Java程序设计》第九周学习总结

    20145213<Java程序设计>第九周学习总结 教材学习总结 "五一"假期过得太快,就像龙卷风.没有一点点防备,就与Java博客撞个满怀.在这个普天同庆的节日里,根 ...

  2. 20145213《Java程序设计》第二周学习总结

    20145213<Java程序设计>第二周学习总结 教材学习内容总结 本周娄老师给的任务是学习教材的第三章--基础语法.其实我觉得还蛮轻松的,因为在翻开厚重的书本,一股熟悉的气息扑面而来, ...

  3. 20145213《Java程序设计》第一周学习总结

    20145213<Java程序设计>第一周学习总结 教材学习内容总结 期待了一个寒假,终于见识到了神秘的娄老师和他的Java课.虽说算不上金风玉露一相逢,没有胜却人间无数也是情理之中,但娄 ...

  4. 21045308刘昊阳 《Java程序设计》第九周学习总结

    21045308刘昊阳 <Java程序设计>第九周学习总结 教材学习内容总结 第16章 整合数据库 16.1 JDBC入门 16.1.1 JDBC简介 数据库本身是个独立运行的应用程序 撰 ...

  5. 20145330孙文馨 《Java程序设计》第一周学习总结

    20145330孙文馨 <Java程序设计>第一周学习总结 教材学习内容总结 刚开始拿到这么厚一本书说没有压力是不可能的,开始从头看觉得很陌生进入不了状态,就稍微会有一点焦虑的感觉.于是就 ...

  6. 20145337 《Java程序设计》第九周学习总结

    20145337 <Java程序设计>第九周学习总结 教材学习内容总结 数据库本身是个独立运行的应用程序 撰写应用程序是利用通信协议对数据库进行指令交换,以进行数据的增删查找 JDBC可以 ...

  7. 20145337 《Java程序设计》第二周学习总结

    20145337 <Java程序设计>第二周学习总结 教材学习内容总结 Java可分基本类型与类类型: 基本类型分整数(short.int.long).字节(byte).浮点数(float ...

  8. 20145218《Java程序设计》第一周学习总结

    20145218 <Java程序设计>第一周学习总结 教材学习内容总结 今天下午看了Java学习的视频,感觉很是新奇,之前觉得Java学起来是艰难枯燥的,但通过第一章的学习觉得如果自己可以 ...

  9. 《Java程序设计》第九周学习总结

    20145224 <Java程序设计>第九周学习总结 第十六章 整合数据库 JDBC入门 ·数据库本身是个独立运行的应用程序 ·撰写应用程序是利用通信协议对数据库进行指令交换,以进行数据的 ...

  10. 《Java程序设计》第二周学习总结

    20145224陈颢文<Java程序设计>第二周学习总结 教材学习内容总结 一.类型.变量与运算符 1.类型 整数: 可细分为为short整数(占2字节),int整数(占4字节),long ...

随机推荐

  1. python基础-基本数据类型总结_整型(int)_字符型(str)_day3

     一.基本数据类型 1.整型(int) ps1:数字 int ,所有的功能,都放在int里a1 = 123a1 = 456 ps2: int 将字符串转换为数字 # -int # 将字符串转换为数字 ...

  2. 对C语言中指针的一些新认识

    学C语言这么久了,才发现指针不是想象中那么简单,当初根本就没理解指针怎么用! 变量--是由操作系统自动分配存储空间的    指针--手动分配存储空间或指向已有变量的地址 指针中的内容需要手动释放,而变 ...

  3. 开发错误日记 12: Unsupported major.minor version 52.0

    开发错误日记 12: Unsupported major.minor version 52.0 在编译时出现如下错误: java.lang.UnsupportedClassVersionError: ...

  4. ScrollView内部元素如何做到fill_parent 或者 match_parent?

    转  : http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2014/0704/1629.html ScrollView滚动视图是指当拥有很多 ...

  5. Dubbo_创建Dubbo服务并在ZooKeeper注册,然后通过Jar包执行

    一.安装ZooKeeper(略) 二.创建Dubbo服务  1.DemoService 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 ...

  6. 计算机网络-TCP连接

    TCP首部20个字节 1.为什么TCP要三次握手建立连接? TCP连接过程,客户端发送请求到服务器,服务器确认请求发送到客户端,客户端再发送确认请求到服务器 原因:简言之,为了防止失效的连接请求发送到 ...

  7. 内存溢出OOM与内存泄漏ML

    附, 微信团队原创分享:Android内存泄漏监控和优化技巧总结 一.如何避免OOM 异常 想要避免OOM 异常首先我们要知道什么情况下会导致OOM 异常. 1.图片过大导致OOM Android 中 ...

  8. Java反射机制详解

    Java反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法:对于任意一个对象,都能够调用它的任意一个方法和属性:这种动态获取的信息以及动态调用对象的方法的功能称为Java语言的反 ...

  9. asp.net mvc 设置启动页面在区域中

    在开发过程中,我们有时候需要启动区域中的页面为起始页面,那我们就需要子啊路由中添加一段代码 如何完整案例:         public static void RegisterRoutes(Rout ...

  10. 【Codeforces 723B】Text Document Analysis 模拟

    求括号外最长单词长度,和括号里单词个数. 有限状态自动机处理一下. http://codeforces.com/problemset/problem/723/B Examples input 37_H ...