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周学习总结的更多相关文章

  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. 关于navicat 系列软件一点击菜单栏就闪退

    navicat 系列软件一点击菜单栏就闪退 多次卸载安装都出现了闪退的现象  后来发现,原来是启动了有道词典屏幕取词才会出现这种现象,关了有道就没事.

  2. 修改\Servlet和Jsp模板的方法

    1.在MyEclipse6.6\myeclipse\eclipse\plugins下找到com.genuitec.eclipse.wizards 2.templates\替换Servlet.java ...

  3. devops model

    1,自动部署() 2,在线监控 (可视化,智能化) 3,故障诊断 (故障识别,故障隔离) 4,快速定位 (识别环境与程序,数据等问题) 评测工具开发---- 统计条目增加大项目: BI中权限―拨测数据 ...

  4. Count the string---hdu3336(kmp Next数组的运用)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3336 题意就是求串s的前缀的个数和: 例如:abab 前缀 个数 a     2 ab    2 ab ...

  5. Android 查看自己的keystore的别名及相关信息

    1.在DOS窗口下进入自己的keystore所在位置,输入 keytool -list  -v -keystore xxxx.keystore -storepass 密码 xxxx.keystore是 ...

  6. 软件project--作图

    软工学习进行了一个多月,但是真正静下心来学习也只是一周左右吧,这段时间里给自己印象最深刻的就是作图了, 机房收费系统我们是先进行的编码,后学习软件project对它来了一次回想性的文档编写. 刚開始当 ...

  7. Java中重载和重写

    重载(Overloading) 方法重载是让类以统一的方式处理不同类型数据的一种手段.多个同名函数同时存在,具有不同的参数个数/类型.重载Overloading是一个类中多态性的一种表现. Java的 ...

  8. git别名

    git config --global alias.lg 'log --oneline --all --graph --decorate'

  9. xpath草稿

    (一)日期和简介 date:2017/12/18 name:a标签href属性提取抛出异常list index out of range (二)问题详细说明: 以百度新闻页面为例: 1.node_li ...

  10. 小tip: 使用SVG寥寥数行实现圆环loading进度效果

    二.正文 设计师设计了一个图片上传圆环loading进度效果.如下截图: 首先,CSS3是可以实现的,以前写过一篇转大饼的文章:“CSS3实现鸡蛋饼饼状图loading等待转转转”.原理跟这个一模一样 ...