20145314郑凯杰 《Java程序设计》第4周学习总结

所有代码已上传:

教材学习内容总结

①继承

设计程序中,因们需要设计多个模块,我想到了李晓东以前教我们的三个字“模块化”。

在JAVA中,我们用父类和子类进行模块的设计,对于一个整体程序,我们需要在一个项目中建立不同的文件,用关键字extends进行相互地继承,达到模块化的效果。

下面直接引用书上的例子,首先有Role.java(见托管)。我们再用剑士和马猴师来对其进行继承:

这里只给上剑士的继承代码:

public class SwordsMan extends Role{

public void fight(){

System.out.println("挥剑攻击");

}

}//SwordsmMan.java

¥¥¥:“is-a关系”

检查语法逻辑是否正确的方法是:看等号的右边类是不是左边类的子类

直接使用书上的例子来示范:

  1. Role role1=new SwordsMan();
  2. Role role2=new Magician();

答案是可以的,为什么呢,因为SwordsMan是一种Role。满足我们的判断条件,所以很显然的这个程序能编译通过。接下来我们用第一个PRG GAME来跑一下以上两个知识点:

运行结果2:

②多态

从定义上看:使用单一接口操作多种类型的对象。

这种说法比较抽象,实际上就是一个问题的多种方面:

通过程序来分析 RPG1.java

运行结果3:

注意看程序中,我们用的方法不同于前面的重载的方式,为不同角色写不同的方法。而是使用了多态,全部继承role,事半功倍。

③重新定义行为

定义:子类在继承父类之后,定义与父类中相同的方法部署,但执行内容不同。

简单地说,就是操作接口相同,操作内容不同。

RPG2(在增强了Role的功能之后,才可以使用跑动RPG2):

运行结果4:

④继承语法

1、protected 的使用:被声明为protected的成员,相同包中的类可以直接存取,不同包中的类可以在继承后的子类直接存取。

对Role优化:

运行结果5:

2、super 关键字的使用:

如果想取得父类中的方法定义,可以在调用方法前,加上super关键字,使用super关键字调用的父类方法,不能定义为private。

通过Role的再一次优化,来练习一下这个语法:

这里用Role3。

运行结果6:

3、java.lang.Object

在Java中,最上层的父类就是java.lang.Object。

P178的例子:

运行结果7:

4、再看抽象类

这里用一个Guess的例子,可以将此程序分为GuessGame.java、ConsoleGame.java和Guess.java三个部分,来运行:

运行结果8:

哈哈 这次运气好 一次就猜中了:

到此,第六章就结束了//下面开始第七章:

①接口

跟“游泳”这个行为可以被所有东西拥有一样,有些东西不是某种东西的专属时,我们就可以用“定义行为”。

¥¥¥:interface

以Swimmer接口为例,进行定义行为:

  1. public interface Swimmer
  2. {
  3. public abstract void swim();
  4. }//Swimmer.java

接下来Fish拥有Swimmer行为,我们用到implements关键字。需要注意的是,接口中的方法不能操作,直接标示为abstract,而且一定是public。

运行结果9(编译):

我们海洋世界1就完结了,主要是认识了implements的关键字,接下来要练习海洋世界2:

通过对海洋世界1中物种的扩充,加入了小丑鱼和鲨鱼。我们就可以直接引用来输出会游泳的物种:

运行结果10:

接下来海洋世界3(加入了海空世界):

从定义接口开始:

  1. public interface Flyer
  2. {
  3. public abstract void fly();
  4. }//Flyer.java OceanWorld3

之后定义了飞机、飞鱼,进行海空世界的运行:

运行结果11:

注意:书上P202的海面飞行器有问题,应该将上面的AIRPLANE改为SEAPLANE,否则通不过编译,后面的海空世界也会出现问题。

接下来的海洋世界无非是进一步练习,这边就不给演示结果了。直接进入下一个知识点。

②接口语法

1、interface用来定义抽象的行为外观,方法要声明为public abstract

Game例子:

运行结果12:

2、匿名内部类:

开发多人联机程序时,我们需要用到继承某个类或操作某个借口并建立实例。我们使用匿名内部类来解决:

第一步、是客户Client的定义和用户信息的定义

第二步、再定义用户接口ClientListener

第三步、收集联机之后的Client对象,这里用曾经学过的“java.util.ArrayList”来收集

(详情见托管代码Interface部分)

运行结果13:

学习内容总结完毕

学习过程中遇到的问题和解决过程

一、在学习过程中我遇到了这样一个令人匪夷所思的情况;

遇到问题1:

注意看“3个问题”正上方,编译程序指向了public class ···中的 public的字母“P”。为什么一个字母会出现错误,然而我检查过了,public的拼写一点都没有问题。

经过百度,我终于找到了答案:

原来是我从Eclipse中把代码复制到记事本中时,首字符丢失,这种字符只有计算机可以识别显示在记事本中是没法看到的。所以出现了问题。

二、方法不会覆盖和实现超现实的方法

在练习书上的范例时,P202的海空飞行器时,我遇到了这样的问题

问题2:

错误“方法不会覆盖和实现超现实的方法”

我的代码是:

冷静想想之后,我发现了问题出在我给了飞机两个功能,而implements却只给了一个功能:

解决2:

问题便被解决了。

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

一、书中出现的问题:

P202上,程序的文件名是Airplane,但在程序里却定义的是Seaplane。这样连编译都通不过吧···要是改动了下面的Seaplane的话,后面的Ocean.java也会出现问题。所以是书上的程序名出现了问题。

图1:

二、多人联机程序出现的问题

遇到问题3:

这个问题因为只出现了小提示,对程序最终的结果并没有任何影响,详细原因还在分析中。

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

本周的学习任务循序渐进,而且是通过游戏和有趣实例的方式让我们进行学习。我从中深刻的感受到了游戏化学习的乐趣。

只需要一些简单的“剑士”、“魔法师”,就比枯燥的成绩统计之类的例子有趣多了。我也学的很快,我正好在大创项目上准备研究这样一个“游戏化学习”的软件。因此对本周的课程详细研究了一下,这肯定也将对我们小组的项目有很大帮助。

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 30篇 400小时
第一周 50/50 1/2 20/20
第二周 700/600 1/4 38/38
第三周 900/1100 1/7 60/60
第四周 800/1350 1/9 90/90

参考资料

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

  1. 20145314郑凯杰 《Java程序设计》第10周学习总结

    20145314郑凯杰 <Java程序设计>第10周学习总结 代码托管: 学习内容总结 网络编程 会打手机吗? 第一个问题:会打手机吗?很多人可能说肯定会啊,不就是按按电话号码,拨打电话嘛 ...

  2. 20145314郑凯杰 《Java程序设计》课程总结

    20145314郑凯杰 <Java程序设计>课程总结 每周读书笔记链接汇总 ①寒假预习--"helloworld" ②第一周读书笔记 ③第二周读书笔记 ④第三周读书笔记 ...

  3. 20145314郑凯杰 《Java程序设计》实验五 实验报告

    20145314郑凯杰 <Java程序设计>实验五 实验报告 实验搭档王亦徐:http://www.cnblogs.com/1152wyx/p/5471524.html 实验要求 完成实验 ...

  4. 20145314郑凯杰 《Java程序设计》第9周学习总结 积极主动敲代码

    20145314郑凯杰 <Java程序设计>第9周学习总结 教材学习内容总结 第十六章 ①JDBC(Java DataBase Connectivity) 即java数据库连接,是一种用于 ...

  5. 20145314郑凯杰 《Java程序设计》实验四 实验报告

    20145314郑凯杰 <Java程序设计>实验四 实验报告 实验要求 完成实验.撰写实验报告,实验报告以博客方式发表在博客园,注意实验报告重点是运行结果,遇到的问题(工具查找,安装,使用 ...

  6. 20145314郑凯杰 《Java程序设计》实验三 敏捷开发与XP实践实验报告

    20145314郑凯杰 <Java程序设计>实验二 实验报告 实验要求 完成实验.撰写实验报告,实验报告以博客方式发表在博客园,注意实验报告重点是运行结果,遇到的问题(工具查找,安装,使用 ...

  7. 20145314郑凯杰 《Java程序设计》第8周学习总结

    20145314郑凯杰 <Java程序设计>第8周学习总结 教材学习内容总结 代码已托管 第十五章 通用API ①日志: 日志对信息安全意义重大,审计.取证.入侵检测等都会用到日志信息 使 ...

  8. 20145314郑凯杰 《Java程序设计》第7周学习总结

    20145314郑凯杰 <Java程序设计>第7周学习总结 教材学习内容总结 首先放上代码托管图片和本地代码图片: 插图4: 插图5: 插图6: 第十三章 时间与日期 13.1 认识时间与 ...

  9. 20145314郑凯杰 《Java程序设计》实验二 实验报告

    20145314郑凯杰 <Java程序设计>实验二 实验报告 实验要求 完成实验.撰写实验报告,实验报告以博客方式发表在博客园,注意实验报告重点是运行结果,遇到的问题(工具查找,安装,使用 ...

  10. 20145314郑凯杰 《Java程序设计》实验一 Java开发环境的熟悉(Windows + Eclipse)实验报告

    20145314郑凯杰 <Java程序设计>实验一 Java开发环境的熟悉(Windows + Eclipse)实验报告 实验要求 •使用JDK编译.运行简单的Java程序: •使用Ecl ...

随机推荐

  1. js 空正则匹配任意一个位置

    看一个正则 这里明显,起到匹配作用的是 | 后的,可 | 后什么都没有,原理不知道,也没有搜到文献,只有在 Reg101 上是这样解释的, 所以得出结论: js 中,空正则匹配任意一个位置. 不过,这 ...

  2. window.location下的属性说明

    属性 说明 window.location.href 完整的url window.location.protocol 协议 window.location.hostname 主机名 window.lo ...

  3. http 服务器编程 适配器

    小结: 1.HandleFunc 只是一个适配器 go http 服务器编程(1) - 云+社区 - 腾讯云 https://cloud.tencent.com/developer/article/1 ...

  4. 属性attribute和property的区别

    <!DOCTYPE html> <html> <head> <meta http-equiv="content-type" content ...

  5. Spring Boot 编写入门程序

    1. SpringBoot 入门 快速创建独立运行的Spring项目以及与主流框架集成; 使用嵌入式的Servlet容器,应用无需打成WAR包; starters自动依赖与版本控制; 大量的自动配置, ...

  6. Sublime Text 配置成 C++ IDE

    在Windows中将Sublime Text配置成C++的IDE.首先,为了运行C++需要安装g++编译器,g++可直接在codeblocks中找到.codeblock的官网下载地址是http://w ...

  7. python序列化和json

    python 的序列化和反序列化用于内存之间的共享,包括服务器和客户端的共享,两个Python程序之间的共享,以及以字符串的形式存储到硬盘中. pyhton 的pickle 可以对Python的各种数 ...

  8. 赵雅智_ListView_ArrayAdapter

    ArrayAdapter六种构造方法的作用 ArrayAdapter<T>(Context context, int textViewResourceId); 上下文,布局文件 Array ...

  9. FTP服务器文件上传的代码实现

    方式一: @Test public void testFtpClient() throws Exception { // 1.创建一个FtpClient对象 FTPClient ftpClient = ...

  10. 细说PHP的FPM

    ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++基础概念++ C ...