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

  1. 20145213《Java程序设计》第九周学习总结

    20145213<Java程序设计>第九周学习总结 教材学习总结 "五一"假期过得太快,就像龙卷风.没有一点点防备,就与Java博客撞个满怀.在这个普天同庆的节日里,根 ...

  2. 20145213《Java程序设计》第二周学习总结

    20145213<Java程序设计>第二周学习总结 教材学习内容总结 本周娄老师给的任务是学习教材的第三章--基础语法.其实我觉得还蛮轻松的,因为在翻开厚重的书本,一股熟悉的气息扑面而来, ...

  3. 20145213《Java程序设计》第一周学习总结

    20145213<Java程序设计>第一周学习总结 教材学习内容总结 期待了一个寒假,终于见识到了神秘的娄老师和他的Java课.虽说算不上金风玉露一相逢,没有胜却人间无数也是情理之中,但娄 ...

  4. 21045308刘昊阳 《Java程序设计》第九周学习总结

    21045308刘昊阳 <Java程序设计>第九周学习总结 教材学习内容总结 第16章 整合数据库 16.1 JDBC入门 16.1.1 JDBC简介 数据库本身是个独立运行的应用程序 撰 ...

  5. 20145330孙文馨 《Java程序设计》第一周学习总结

    20145330孙文馨 <Java程序设计>第一周学习总结 教材学习内容总结 刚开始拿到这么厚一本书说没有压力是不可能的,开始从头看觉得很陌生进入不了状态,就稍微会有一点焦虑的感觉.于是就 ...

  6. 20145337 《Java程序设计》第九周学习总结

    20145337 <Java程序设计>第九周学习总结 教材学习内容总结 数据库本身是个独立运行的应用程序 撰写应用程序是利用通信协议对数据库进行指令交换,以进行数据的增删查找 JDBC可以 ...

  7. 20145337 《Java程序设计》第二周学习总结

    20145337 <Java程序设计>第二周学习总结 教材学习内容总结 Java可分基本类型与类类型: 基本类型分整数(short.int.long).字节(byte).浮点数(float ...

  8. 20145218《Java程序设计》第一周学习总结

    20145218 <Java程序设计>第一周学习总结 教材学习内容总结 今天下午看了Java学习的视频,感觉很是新奇,之前觉得Java学起来是艰难枯燥的,但通过第一章的学习觉得如果自己可以 ...

  9. 《Java程序设计》第九周学习总结

    20145224 <Java程序设计>第九周学习总结 第十六章 整合数据库 JDBC入门 ·数据库本身是个独立运行的应用程序 ·撰写应用程序是利用通信协议对数据库进行指令交换,以进行数据的 ...

  10. 《Java程序设计》第二周学习总结

    20145224陈颢文<Java程序设计>第二周学习总结 教材学习内容总结 一.类型.变量与运算符 1.类型 整数: 可细分为为short整数(占2字节),int整数(占4字节),long ...

随机推荐

  1. Android SQLite数据储存方式

    SQLiteOpenHelper 类 用SQLiteOpenHelper 类中的 getWritableDatabase()和getReadableDatabase()方法可以获得数据库的引用. 为了 ...

  2. 2.2安装JDK

    在Ubuntu下安装JDK的步骤: (1)首先需要自己安装的Ubuntu系统是多少位的,可以使用命令[getconf LONG_BIT]获取这个信息: (2)在JDK官网下载相应(选取和Linux系统 ...

  3. win7启动文件修复

    1:在xp下运行bcdedit.exe(这软件在windows 7的系统盘下 就在你的c:\windows\system32\这里2:将这软件复制到c盘根目录下3:进入命令提示符 输入 c:4:输入 ...

  4. VS软件对应编号

    VC6VC7(2003)VC8(2005)VC9(2008)VC10(2010)VC11(2012)VC12(2013)

  5. 彻底解决_OBJC_CLASS_$_某文件名", referenced from:问题转

    最近在使用静态库时,总是出现这个问题.下面总结一下我得解决方法: 1. .m文件没有导入   在Build Phases里的Compile Sources 中添加报错的文件 2. .framework ...

  6. 实现在Android开发中的Splash Screen开场屏的效果

    很多网友可能发现近期Tencent推出的手机QQ Android版包含了一个开场屏Splash Screen载入效果,通常游戏或大型软件打开时可能需要一个释放解析资源的过程,需要一个前台的动画播放和后 ...

  7. 基于CSS+dIV的网页层,点击后隐藏或显示

    一个基于CSS+dIV的网页层,用JavaScript结合Input按钮进行控制,点击后显示或隐藏,网页上常用到的特效之一,实用性较强,相信对大家的前端设计有帮助. <!DOCTYPE html ...

  8. 如何在某个按钮上触发 bootstarp Modal 组件

    <?php Modal::begin([ 'id'=>'myModal', 'header' => '<h2>标题</h2>']); echo '内容'; M ...

  9. c# 数据库操作学习

    一. 如何处理数据库连接 1. 数据库连接可以分为“物理连接”和“逻辑连接”(默认使用连接池的情况下Pooling=true): 物理连接:创建数据库连接时,默认会有一定数量的物理连接(默认Min P ...

  10. SQL中补0

     SQL中补0 编写人:CC阿爸 2014-3-14 第一种方法: right('00000'+cast(@count as varchar),5) 其中'00000'的个数为right函数的最后参数 ...