20155305乔磊2016-2017-2《Java程序设计》第四周学习总结
20155305乔磊2016-2017-2《Java程序设计》第四周学习总结
教材学习内容总结
继承
- 继承就是避免多个类间重复定义共同行为。
- 面向对象中,子类继承父类,就是把程序中相同的代码部分提升为父类。
extends
关键字,表示前者会扩充后者的行为,即继承后者的行为。fight()为SwordsMan扩充的Role没有的行为。private
成员也会被继承,不过子类无法直接存取,必须通过父类提供的方法存取。
is-a(是一种)关系
- 子类只能继承一个父类,这种子类父类之间的关系就是
is-a
关系。 - 检查语法逻辑是否正确,方式是从
=
右边往左读:判断右边是不是一种左边。例:Role role1=new SwordsMan();
即判断SwordsMan
是不是一种Role
?若是则语法正确,反之则编译失败。 - 强制让后者是一种前者:
Role role1=new SwordsMan();SwordsMan swordsman=(SwordsMan) role1;
多态
使用单一接口操作多种类型的对象,具有更高的可维护性。
Java
以继承及界面来实现多态,是次态多态的一种实现。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("Moinca");
magician.setLevel(1);
magician.setBlood(100); showBlood(swordsMan); //SwordsMan是一种Role
showBlood(magician);
}
static void showBlood(Role role) //声明为Role类型
{
System.out.printf("%s 血量 %d%n",role.getName(), role.getBlood());
}
}
重新定义行为
- SwordsMan与Magician的fight()方法签署的都是public void fight(),操作接口相同,只是方法操作内容不同,因此,可以将fight()方法提升至Role类中定义。
- 如果传入drawFight()的是SwordsMan,role参数参考的就是SwordsMan实例,操作的就是SwordsMan上的fight()方法定义。
- 重新定义父类中某个方法时,子类必须撰写与父类方法中相同的签署。可以在子类中某个方法前使用
@Override
要求编译程序检查该方法是不是真的重新定义了父类中某个方法,如果不是会引发编译错误。 - 对于父类中的方法权限,只能扩大不能缩小。
抽象方法 抽象类
- 抽象方法:某方法区块中没有任何程序代码操作,用
abstract
表示该方法为抽象方法,不用撰写{}区块,直接";"结束即可。 - 抽象类:内含抽象方法的类,一定要在
class
前标示abstract
,表示类定义不完整,不能用来生成实例。
protected
- 被声明为
protected
的成员,相同包中的类可以直接存取,不同包中的类可以在继承后的子类直接存取。 - private、无关键字、protected、public权限依次递增。
构造函数
- 类有继承关系时,会先进行父类定义的初始流程,再进行子类定义的初始流程。
- 父类中可以重载多个构造函数,如果子类构造函数中没有制定执行父类中哪个构造函数,默认会调用父类中无参数构造函数。
this()
和super()
只能择一调用,并且要写在构造函数第一行执行。
final关键字
- class或方法被声明为final,表示这是最后一个,不会再有子类或子类不可以重新定义方法。
java.lang.Object
java.lang.Object
是最上层父类,Java中所有对象一定是一种Object。
接口的默认
- Java中可以使用interface来定义抽象的行为和外观。
- 接口中的方法没有操作时一定得是公开且抽象的。
- 接口可以继承别的接口,也可以同时继承两个以上的接口,同样也是用
extends
关键字,这代表了继承父接口的行为。
匿名内部类
- 临时继承某个类或操作某个接口并建立实例,由于这类子类或接口操作类只使用一次,不需要为这些类定义名称,可以使用匿名内部类。
教材学习中的问题和解决过程
- 问题:本来像书上p167中的
fight()
方法运行都没有问题,但是按照书上p169抽象方法与抽象类中,将前面的Role.java
中的fight()
方法改成如下的格式public abstract void fight();
之后,RPG.java
就运行不了了。 - 解决方法:待解决。
代码调试中的问题和解决过程
- 问题:Guest访客名称,访客名单在run的时候出现了问题
后来在run edit中发现自己把各项都改成了Guest
- 解决方法:把run edit中各项改了
运行结果正确
代码托管
上周考试错题总结
- 填空:Linux Bash中,(grep )命令可以进行全文搜索。
- 填空:System.out.println(“”+52+25);的结果是(5225)
- 填空:System.out.println(52+25+””);的结果是(77)
- 填空:p86 命令行下编译Guess.java的命令是(javac -d . Guess.java)
- 填空:两个Integer对象比较大小,可以使用(comareTo())方法
上网查Interger对象的比较方法写的是ValueOf()。老师答案是comareTo()。不太理解。
- 填空:“30”转化为byte类型的30的语句是(Byte.parseByte(“30”);)。
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 3000行 | 20篇 | 400小时 | |
第一周 | 200/200 | 1/1 | 18/18 | |
第二周 | 153/353 | 1/2 | 18/36 | |
第三周 | 356/709 | 1/3 | 24/60 | |
第四周 | 450/1259 | 1/4 | 28/85 |
计划学习时间:30小时
实际学习时间:28小时
改进情况:计划学习时间由于上周没有达成,所以这周仍然定为30小时,学习时间有所提高。
参考资料
20155305乔磊2016-2017-2《Java程序设计》第四周学习总结的更多相关文章
- Java程序设计第四周学习总结
1. 本周学习总结 1.1 尝试使用思维导图总结有关继承的知识点. 1.2 使用常规方法总结其他上课内容. 答:①String类是final类,不能定义String的子类. ② instanceof ...
- 20155305乔磊2016-2017-2《Java程序设计》第六周学习总结
20155305乔磊2016-2017-2<Java程序设计>第六周学习总结 教材学习内容总结 InputStream与OutputStream 串流设计 1.串流:Java将输入/输出抽 ...
- 20155305乔磊2016-2017-2《Java程序设计》第五周学习总结
20155305乔磊2016-2017-2<Java程序设计>第五周学习总结 教材学习内容总结 try.catch 1.求平均数程序示例 import java.util.Scanner; ...
- 20155305乔磊2016-2017-2《Java程序设计》第八周学习总结
20155305乔磊2016-2017-2<Java程序设计>第八周学习总结 教材学习内容总结 通用API 日志API 1.java.util.logging包提供了日志功能相关类与接口, ...
- 20155305乔磊2016-2017-2《Java程序设计》第十周学习总结
20155305乔磊2016-2017-2<Java程序设计>第十周学习总结 教材学习内容总结 Java的网络编程 网络编程 网络编程就是在两个或两个以上的设备(例如计算机)之间传输数据. ...
- 20155305乔磊2016-2017-2《Java程序设计》第三周学习总结
20155305乔磊 2016-2017-2 <Java程序设计>第三周学习总结 教材学习内容总结 对象(Object):存在的具体实体,具有明确的状态和行为 类(Class):具有相同属 ...
- 20155305乔磊2016-2017-2《Java程序设计》第二周学习总结
20155305乔磊 2016-2017-2 <Java程序设计>第二周学习总结 教材学习内容总结 第三章学习了基本类型 整数(short.int.long) 字节(byte) 浮点数(f ...
- 对于“2017面向对象程序设计(JAVA)第四周学习总结”存在问题的反馈
对于“2017面向对象程序设计(JAVA)第四周学习总结”存在问题的反馈 “这部分同学博文总结没有写,实验作业没有提交.”——1.关于博文作业.实验作业教学功能的正解:学习知识.暴露问题.衔接课上.2 ...
- 20155305乔磊《网络对抗》逆向及Bof基础
20155305乔磊<网络对抗>逆向及Bof基础 实践目标 本次实践的对象是一个名为pwn1的linux可执行文件. 该程序正常执行流程是:main调用foo函数,foo函数会简单回显任何 ...
随机推荐
- 自动出题判分——c#学习实践
1.程序功能自动出题—(程序随意给出10以内加减乘除)并且判断结果正确与否,正确打对勾,错误打错号. 2.设计界面: 3.代码: using System; using System.Collecti ...
- Scala高阶函数
1.作为参数的函数 函数可以作为一个参数传入到一个方法当中去 def main(args: Array[String]): Unit = { val myFunc1 =(x:Int) =>{ x ...
- vue开发知识点汇总
网址: https://www.tuicool.com/articles/Zb2Qre2;
- Charles使用笔记
Charles本身其实是一款十分强大且易用的代理软件,最近用的比较多,大致整理了一下自己用到的一些东西. Charles的主要作用 1.查看网络请求,手动分析数据 2.代理接口,模拟数据 ...
- ES6重点--笔记(转)
最常用的ES6特性 let, const, class, extends, super, arrow functions, template string, destructuring, defaul ...
- Java基础知识强化之多线程笔记07:同步、异步、阻塞式、非阻塞式 的联系与区别
1. 同步: 所谓同步,就是在发出一个功能调用时,在没有得到结果之前,该调用就不返回.但是一旦调用返回,就必须先得到返回值了. 换句话话说,调用者主动等待这个"调用"的结果. 对于 ...
- Linux下utf-8 BOM 的检查和删除 (65279错误解决办法)
Java代码在转换为UTF-8编码后,Eclipse编译运行没有问题,但是用Maven编译时,抛出非法字符65278错误. 原因在于,转换后文件头部带有BOM信息,而Maven不支持,删掉文件头的BO ...
- HDU 1059(多重背包加二进制优化)
http://acm.hdu.edu.cn/showproblem.php?pid=1059 Dividing Time Limit: 2000/1000 MS (Java/Others) Me ...
- 精读 SBAR SDN flow-Based monitoring and Application Recognition
目录 架构 测量模块 分类模块 具体实现 实验:最后接入巴塞罗那的校园网流量测试: SBAR: SDN flow-Based monitoring and Application Recognitio ...
- android学习:Android上面部署Apache FTPServer
经过了几天的研究,终于Apache FTPServer在Android的配置和使用上有了一些心得,现在分享出来,提供给大家参考,说到这儿又不得不吐槽一下这要命的转载了,找Apache FTPServe ...