20145103《java程序设计》第4周学习总结
20145103 《Java程序设计》第4周学习总结
教材学习内容总结
继承
继承共同行为
·继承基本上就是避免多个类间重复定义共同行为。
·继承的三个好处:减少代码冗余;维护变得简单;扩展变得容易。
·构造方法不能被继承。
·代码如下:
public class RPG1
{
public static void main (String[] args)
{
demoSwordsMan();
demoMagician();
}
static void demoSwordsMan()
{
SwordsMan1 swordsMan1 = new SwordsMan1();
swordsMan1.setName("Justin");
swordsMan1.setLevel(1);
swordsMan1.setBlood(200);
System.out.printf("剑士 : (%s, %d, %d)%n",swordsMan1.getName(),
swordsMan1.getLevel(),swordsMan1.getBlood());
}
static void demoMagician()
{
Magician1 magician = new Magician1();
magician.setName("Moinca");
magician.setLevel(1);
magician.setBlood(100);
System.out.printf("魔法师 :(%s ,%d ,%d)%n",magician.getName(),
magician.getLevel(),magician.getBlood());
}
}
多态与is-a
·is-a代表的是类之间的继承关系。中文称为“是一种”关系。
·使用是一种原则,就可以判断何时编译成功,何时编译失败。
·编译程序会检查父子类间的“是一种”关系.
·定义继承需要注意:类与类之间要有是一种(is-a)关系,比如SwordsMan继承了Role,所以SwordsMan is a Role。
·代码如下:
public class RPG3
{
public static void main(String[] args)
{
SwordsMan3 swordsMan3 = new SwordsMan3();
swordsMan3.setName("Justin");
swordsMan3.setLevel(1);
swordsMan3.setBlood(200);
Magician3 magician3 = new Magician3();
magician3.setName("Monica");
magician3.setLevel(1);
magician3.setBlood(100);
drawFight(swordsMan3);
drawFight(magician3);
}
static void drawFight(Role3 role)
{
System.out.print(role.getName());
role.fight3();
}
}
继承语法
1、protected 的使用:被声明为protected的成员,相同包中的类可以直接存取,不同包中的类可以在继承后的子类直接存取。
2、super 关键字的使用:
如果想取得父类中的方法定义,可以在调用方法前,加上super关键字,使用super关键字调用的父类方法,不能定义为private。
3、java.lang.Object
在Java中,最上层的父类就是java.lang.Object。
第七章
7.1接口
7.1.1-接口定义行为:对于定义行为,可以使用interace关键字定义,类要操作接口,必须使用implements关键字,对接口中定义的方法有两种操作方式,一是操作接口中定义的方法,二是再度将该方法表示为abstract。操作接口表示“拥有行为”,不再是“是一种”的关系。
7.1.2-行为的多态:与继承相同,也可以让一个对象强行扮演(cast)某种行为,与多态相同,只要是操作同一个接口的类都可以拥有接口的行为,可维护型也同时得到了较大的提高。
7.1.3-解决需求变化:在java中类可以操作两个以上的类,可以同时继承某个类并操作某些接口;于此同时,java中接口可以继承自另一个接口,也就是继承父接口行为,再在子接口中额外定义行为。
7.2接口语法细节
7.2.1-接口中的方法没有操作时,一定得是公开并且抽象。
在interface接口中常常可以定义枚举常数(例:public static final int),实际上,在interface接口中也只能定义public static final的枚举常数,并且一定要使用=指定值,否则就会编译错误。个人感觉枚举常数在表达意思上更清楚一些,便于程序员读懂程序。接口也可以继承接口。
7.2.2-匿名内部类:主要是在临时继承某个类或操作某个接口并建立实例的需求(例:Some some=new Some(){};)
7.2.3-使用enum枚举常数:public enum Action{},实际上enum定义了特殊的类,enum中的元素也就是枚举常数。
教材学习中的问题和解决过程
代码托管截图:

代码调试中的问题和解决过程
抽象类使用的两种方式还没能完全地理解,再有就是在第七章有一个Interface的程序,虽然按照书上的代码敲了一遍并且编译运行成功了,但感觉这一串代码还是有些难以理解,其中的调用比较多,也比较复杂。
我自己感觉继承和接口其实是差不多的,一个是“是一种”的关系,另外一个是一种“拥有行为"的关系,一个是继承,一个是操作接口,相似而不相同。
其他(感悟、思考等,可选)
学习进度条
| 代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
|---|---|---|---|---|
| 目标 | 2000行 | 16篇 | 400小时 | |
| 第一周 | 200/200 | 1/1 | 20/20 | |
| 第二周 | 100/300 | 1/2 | 20/40 | |
| 第三周 | 200/500 | 1/3 | 30/70 | |
| 第四周 | 200/700 | 1/4 | 30/1000 |
20145103《java程序设计》第4周学习总结的更多相关文章
- 20145213《Java程序设计》第九周学习总结
20145213<Java程序设计>第九周学习总结 教材学习总结 "五一"假期过得太快,就像龙卷风.没有一点点防备,就与Java博客撞个满怀.在这个普天同庆的节日里,根 ...
- 20145213《Java程序设计》第二周学习总结
20145213<Java程序设计>第二周学习总结 教材学习内容总结 本周娄老师给的任务是学习教材的第三章--基础语法.其实我觉得还蛮轻松的,因为在翻开厚重的书本,一股熟悉的气息扑面而来, ...
- 20145213《Java程序设计》第一周学习总结
20145213<Java程序设计>第一周学习总结 教材学习内容总结 期待了一个寒假,终于见识到了神秘的娄老师和他的Java课.虽说算不上金风玉露一相逢,没有胜却人间无数也是情理之中,但娄 ...
- 21045308刘昊阳 《Java程序设计》第九周学习总结
21045308刘昊阳 <Java程序设计>第九周学习总结 教材学习内容总结 第16章 整合数据库 16.1 JDBC入门 16.1.1 JDBC简介 数据库本身是个独立运行的应用程序 撰 ...
- 20145330孙文馨 《Java程序设计》第一周学习总结
20145330孙文馨 <Java程序设计>第一周学习总结 教材学习内容总结 刚开始拿到这么厚一本书说没有压力是不可能的,开始从头看觉得很陌生进入不了状态,就稍微会有一点焦虑的感觉.于是就 ...
- 20145337 《Java程序设计》第九周学习总结
20145337 <Java程序设计>第九周学习总结 教材学习内容总结 数据库本身是个独立运行的应用程序 撰写应用程序是利用通信协议对数据库进行指令交换,以进行数据的增删查找 JDBC可以 ...
- 20145337 《Java程序设计》第二周学习总结
20145337 <Java程序设计>第二周学习总结 教材学习内容总结 Java可分基本类型与类类型: 基本类型分整数(short.int.long).字节(byte).浮点数(float ...
- 20145218《Java程序设计》第一周学习总结
20145218 <Java程序设计>第一周学习总结 教材学习内容总结 今天下午看了Java学习的视频,感觉很是新奇,之前觉得Java学起来是艰难枯燥的,但通过第一章的学习觉得如果自己可以 ...
- 《Java程序设计》第九周学习总结
20145224 <Java程序设计>第九周学习总结 第十六章 整合数据库 JDBC入门 ·数据库本身是个独立运行的应用程序 ·撰写应用程序是利用通信协议对数据库进行指令交换,以进行数据的 ...
- 《Java程序设计》第二周学习总结
20145224陈颢文<Java程序设计>第二周学习总结 教材学习内容总结 一.类型.变量与运算符 1.类型 整数: 可细分为为short整数(占2字节),int整数(占4字节),long ...
随机推荐
- Android IOS WebRTC 音视频开发总结(五八)-- 图文解说视频直播原理
本文主要介绍rtmp&hls视频直播原理,文章最早发表在我们的微信公众号上,详见这里,欢迎关注微信公众号blackerteam,更多详见www.blackerteam.com 现在视频直播很火 ...
- Solaris的vi
进入输入模式i: 在光标之前插入a: 在光标之后插入o: 在下面新建一行输入I: 光标移动到本行首插入A: 光标移动到本行末尾插入O: 在上面新建一行输入 移动光标M:移到屏幕中间一行的行首L:移到屏 ...
- 破解Demo
需要破解的程序界面如下: 需要破解的程序的主要代码如下: void CEasyCrackMeDlg::OnBnClickedButtonOk() { // TODO: 在此添加控件通知处理程序代码 T ...
- .net4.0注册到IIS
IIS和.netfw4.0安装顺序是从前到后,如果不小心颠倒了,无所谓. 打开程序-运行-cmd:输入一下命令重新注册IIS C:\WINDOWS\Microsoft.NET\Framework\v4 ...
- node中的流程控制中,co,thunkify为什么return callback()可以做到流程控制?
前言 我在学习generator ,yield ,co,thunkify的时候,有许多费解的地方,经过了许多的实践,也慢慢学会用,慢慢的理解,前一阵子有个其他项目的同事过来我们项目组学习node,发现 ...
- 为什么for in循环不适合用于数组
首先一点无关的,使用(var i in a) 而不是( i in a),除非你想创建全局变量. 第二点,for in 循环会忽略空的数组 var a = []; a[5] = 5; // Perfec ...
- POJ C程序设计进阶 编程题#5:细菌分组实验
编程题#5:细菌实验分组 来源: POJ (Coursera声明:在POJ上完成的习题将不会计入Coursera的最后成绩.) 注意: 总时间限制: 1000ms 内存限制: 65536kB 描述 有 ...
- javascript的变量,传值和传址,参数之间关系
先把收获晾一下: 1.javascrip变量包含两种类型的值,一种为引用类型的值,一种是基本类型的值.引用类型包括:Array,Object,Function(可以这么理解,非基本类型的都是引用类型) ...
- (转载)实现QQ侧滑边栏
Android ViewDragHelper实现QQ侧滑边栏 移动手机版的QQ的左边侧栏,有一个特殊的交互设计效果:当用户手指向右或向左滑动时,QQ的左边会弹出或收缩一个侧滑的边栏.这种效果简单的做法 ...
- 负载均衡 IO etc.
IO多路复用之epoll总结 ↑2013年8月21日11:49:44 EPOLL下的accept(不错的blog) 关于TCP封包.粘包.半包 linux内核TCP相关参数解释 ↑2013年8月14日 ...