20145314郑凯杰 《Java程序设计》第4周学习总结
20145314郑凯杰 《Java程序设计》第4周学习总结
所有代码已上传:
教材学习内容总结
①继承
设计程序中,因们需要设计多个模块,我想到了李晓东以前教我们的三个字“模块化”。
在JAVA中,我们用父类和子类进行模块的设计,对于一个整体程序,我们需要在一个项目中建立不同的文件,用关键字extends进行相互地继承,达到模块化的效果。
下面直接引用书上的例子,首先有Role.java(见托管)。我们再用剑士和马猴师来对其进行继承:
这里只给上剑士的继承代码:
public class SwordsMan extends Role{
public void fight(){
System.out.println("挥剑攻击");
}
}//SwordsmMan.java
¥¥¥:“is-a关系”
检查语法逻辑是否正确的方法是:看等号的右边类是不是左边类的子类
直接使用书上的例子来示范:
Role role1=new SwordsMan();
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接口为例,进行定义行为:
public interface Swimmer
{
public abstract void swim();
}//Swimmer.java
接下来Fish拥有Swimmer
行为,我们用到implements
关键字。需要注意的是,接口中的方法不能操作,直接标示为abstract,而且一定是public。
运行结果9(编译):
我们海洋世界1就完结了,主要是认识了implements的关键字,接下来要练习海洋世界2:
通过对海洋世界1中物种的扩充,加入了小丑鱼和鲨鱼。我们就可以直接引用来输出会游泳的物种:
运行结果10:
接下来海洋世界3(加入了海空世界):
从定义接口开始:
public interface Flyer
{
public abstract void fly();
}//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周学习总结的更多相关文章
- 20145314郑凯杰 《Java程序设计》第10周学习总结
20145314郑凯杰 <Java程序设计>第10周学习总结 代码托管: 学习内容总结 网络编程 会打手机吗? 第一个问题:会打手机吗?很多人可能说肯定会啊,不就是按按电话号码,拨打电话嘛 ...
- 20145314郑凯杰 《Java程序设计》课程总结
20145314郑凯杰 <Java程序设计>课程总结 每周读书笔记链接汇总 ①寒假预习--"helloworld" ②第一周读书笔记 ③第二周读书笔记 ④第三周读书笔记 ...
- 20145314郑凯杰 《Java程序设计》实验五 实验报告
20145314郑凯杰 <Java程序设计>实验五 实验报告 实验搭档王亦徐:http://www.cnblogs.com/1152wyx/p/5471524.html 实验要求 完成实验 ...
- 20145314郑凯杰 《Java程序设计》第9周学习总结 积极主动敲代码
20145314郑凯杰 <Java程序设计>第9周学习总结 教材学习内容总结 第十六章 ①JDBC(Java DataBase Connectivity) 即java数据库连接,是一种用于 ...
- 20145314郑凯杰 《Java程序设计》实验四 实验报告
20145314郑凯杰 <Java程序设计>实验四 实验报告 实验要求 完成实验.撰写实验报告,实验报告以博客方式发表在博客园,注意实验报告重点是运行结果,遇到的问题(工具查找,安装,使用 ...
- 20145314郑凯杰 《Java程序设计》实验三 敏捷开发与XP实践实验报告
20145314郑凯杰 <Java程序设计>实验二 实验报告 实验要求 完成实验.撰写实验报告,实验报告以博客方式发表在博客园,注意实验报告重点是运行结果,遇到的问题(工具查找,安装,使用 ...
- 20145314郑凯杰 《Java程序设计》第8周学习总结
20145314郑凯杰 <Java程序设计>第8周学习总结 教材学习内容总结 代码已托管 第十五章 通用API ①日志: 日志对信息安全意义重大,审计.取证.入侵检测等都会用到日志信息 使 ...
- 20145314郑凯杰 《Java程序设计》第7周学习总结
20145314郑凯杰 <Java程序设计>第7周学习总结 教材学习内容总结 首先放上代码托管图片和本地代码图片: 插图4: 插图5: 插图6: 第十三章 时间与日期 13.1 认识时间与 ...
- 20145314郑凯杰 《Java程序设计》实验二 实验报告
20145314郑凯杰 <Java程序设计>实验二 实验报告 实验要求 完成实验.撰写实验报告,实验报告以博客方式发表在博客园,注意实验报告重点是运行结果,遇到的问题(工具查找,安装,使用 ...
- 20145314郑凯杰 《Java程序设计》实验一 Java开发环境的熟悉(Windows + Eclipse)实验报告
20145314郑凯杰 <Java程序设计>实验一 Java开发环境的熟悉(Windows + Eclipse)实验报告 实验要求 •使用JDK编译.运行简单的Java程序: •使用Ecl ...
随机推荐
- js 空正则匹配任意一个位置
看一个正则 这里明显,起到匹配作用的是 | 后的,可 | 后什么都没有,原理不知道,也没有搜到文献,只有在 Reg101 上是这样解释的, 所以得出结论: js 中,空正则匹配任意一个位置. 不过,这 ...
- window.location下的属性说明
属性 说明 window.location.href 完整的url window.location.protocol 协议 window.location.hostname 主机名 window.lo ...
- http 服务器编程 适配器
小结: 1.HandleFunc 只是一个适配器 go http 服务器编程(1) - 云+社区 - 腾讯云 https://cloud.tencent.com/developer/article/1 ...
- 属性attribute和property的区别
<!DOCTYPE html> <html> <head> <meta http-equiv="content-type" content ...
- Spring Boot 编写入门程序
1. SpringBoot 入门 快速创建独立运行的Spring项目以及与主流框架集成; 使用嵌入式的Servlet容器,应用无需打成WAR包; starters自动依赖与版本控制; 大量的自动配置, ...
- Sublime Text 配置成 C++ IDE
在Windows中将Sublime Text配置成C++的IDE.首先,为了运行C++需要安装g++编译器,g++可直接在codeblocks中找到.codeblock的官网下载地址是http://w ...
- python序列化和json
python 的序列化和反序列化用于内存之间的共享,包括服务器和客户端的共享,两个Python程序之间的共享,以及以字符串的形式存储到硬盘中. pyhton 的pickle 可以对Python的各种数 ...
- 赵雅智_ListView_ArrayAdapter
ArrayAdapter六种构造方法的作用 ArrayAdapter<T>(Context context, int textViewResourceId); 上下文,布局文件 Array ...
- FTP服务器文件上传的代码实现
方式一: @Test public void testFtpClient() throws Exception { // 1.创建一个FtpClient对象 FTPClient ftpClient = ...
- 细说PHP的FPM
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++基础概念++ C ...