20145101《Java程序设计》第4周学习总结

教材学习内容总结

第六章 继承与多态

  • 继承:避免多个类间重复定义共同行为。

把相同代码提升为父类

运用extends关键字的子类会继承扩充父类行为

多个类中存在相同属性和行为时,将这些内容抽取到单独一个类中,那么多个类无需再定义这些属性和行为,只要继承单独的那个类即可。  

多个类可以称为子类,单独这个类称为父类或者超类。  

子类可以直接访问父类中的非私有的属性和行为。  

public class Game1Role {
private String name;
private int level;
private int blood;
public int getBlood(){
return blood;
}
public void setBlood(int blood) {
this.blood = blood;
}
public int getLevel() {
return level;
}
public void setLevel(int level) {
this.level = level;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}

通过extends 关键字让类与类之间产生继承关系。

public class Game1SwordsMan extends Game1Role {
public void fight(){
System.out.println("挥剑攻击");
}
}
  • 多态:单一接口操作多种类型的对象。

  • is-a关系定义:子类只能继承一个父类,“是一种”关系。

     public class RPG {
    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("Monica");
    magician.setLevel(1);
    magician.setBlood(100); showBlood(swordsMan);
    showBlood(swordsMan); } static void showBlood(Role role) {
    System.out.printf("%s 血量 %d%n", role.getName(), role.getBlood());
    }
    }

在showBlood()方法中,通过Role类型既可以操作SwordsMan对象,也可以操作Magician对象,这就是多态。

  • 重新定义:在继承父类之后,定义与父类中相同的方法部署,但执行内容不同。

     public class RPG3
    {
    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("Monica");
    magician.setLevel(1);
    magician.setBlood(100); drawFight(swordsMan);
    drawFight(magician); }
    static void drawFight(Role role)
    {
    System.out.print(role.getName());
    role.fight();
    }
    }
  • 抽象方法:如果某方法区块中真的没有任何程序代码操作,可以使用abstract表示该方法为抽象方法,不用撰写{ }区块,直接“;”结束即可。

    含有抽象方法的类,一定要在class前标示abstract;子类如果继承抽象类,意识继续标示abstract,另一种就是操作方法。

  • 继承语法的细节

    super关键字表示父类的意思。this变量代表对象本身。即super()和this()类似,区别是,super从子类中调用父类的构造方法,this()在同一类内调用其它方法。

    调用super()必须写在子类构造方法的第一行,否则编译不通过。每个子类构造方法的第一条语句,都是隐含地调用super()。

     public class OceanWorld1Anemonefish extends OceanWorld1Fish {
    public OceanWorld1Anemonefish(String name) {
    super(name);
    }
    @Override
    public void swim() {
    System.out.printf("小丑鱼 %s 游泳%n", name);
    }
    }

第七章 接口与多态

  • 接口:可以理解为一种特殊的类,里面全部是由全局常量(static final)和公共的抽象方法所组成。

  • 接口的定义格式:接口的数据成员,只允许被public, static, final修饰。

    接口的方法成员,只允许被public, abstract修饰。

    接口中的数据成员都为static final类型,必须进行初始化,且接口的数据成员的值不能被修改,允许省略static, final关键字。接口中的方法必须是“抽象方法”,不能有方法体,允许省略public及abstract关键字

  • 接口的实现:

    接口不能用new运算符直接产生对象,必须利用其特性设计新的类,再用新类来创建对象

    与抽象类一样,接口要使用也必须通过子类,子类通过implements关键字实现接口。

  • 接口的继承:接口不能继承一个抽象类,却可以通过extends同时继承于多个接口。

     import static java.lang.System.out;
    public class EnumGame {
    public static void main(String[] args) {
    play(EnumAction.RIGHT);
    play(EnumAction.UP);
    }
    public static void play(EnumAction action) {
    switch (action) {
    case STOP:
    out.println("播放停止动画");
    break;
    case RIGHT:
    out.println("播放向右动画");
    break;
    case LEFT:
    out.println("播放向左动画");
    break;
    case UP:
    out.println("播放向上动画");
    break;
    case DOWN:
    out.println("播放向下动画");
    break;
    }
    }
    }

教材学习中的问题和解决过程

代码调试中的问题和解决过程

本周代码托管截图

其他(感悟、思考等,可选)

 java学习是一条长久的道路,有坎坷,也有解决问题的喜悦。这一周主要学习了六七章节的内容,首先主要是一个RPG、SwordsMan这两个程序,但其不仅仅是一个程序,是多个程序继承在一起才能运行,我们正一步一步在添砖加瓦,使程序日趋完善,功能越发强大。这周的学习让我体会到java语言功能的多样,操作接口、继承类,有时相同的问题可以有不同的方法解决,就需要多学习,选择效率高、准确度高的方法来解决问题。

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 30篇 400小时
第一周 200/200 2/2 20/20
第二周 200/400 1/3 18/38
第三周 200/600 1/4 22/60
第四周 200/800 1/5 30/90

参考资料

20145101《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. Mybatis插入数据后返回主键id

    有时候使用mybatis插入数据后,需要用到记录在数据库中的自增id,可以利用keyProperty来返回,赋值给实体类中的指定字段. 单条记录插入并返回 First, if your databas ...

  2. 5839Special Tetrahedron---hdu5839(计算几何,求特殊四面体个数)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5839 给你n个三维的点,然后求这n各点可以构成多少个特殊四面体,特殊四面体满足一下两点: 1.至少有四 ...

  3. router-link传参 query方式

    router.js内的路由配置 { path: '/CreateProgress', name: 'CreateProgress', component:CreateProgress }   传参(q ...

  4. 洛谷P2801 教主的魔法 分块

    正解:分块 解题报告: 哇之前的坑还没填完就又写新博客? 不管不管,之前欠的两三篇题解大概圣诞节之前会再仔细想想然后重新写下题解趴,确实还挺难的感觉没有很好的理解呢QAQ还是太囫囵吞枣不求甚解了,这样 ...

  5. 【Python】【web.py】python web py入门-4-请求处理(上)

    python web py入门-4-请求处理(上) 2017年09月05日 23:07:24 Anthony_tester 阅读数:2907 标签: webpy入门请求处理 更多 个人分类: Pyth ...

  6. Ubuntu14.04+eclipse下cocos2d-x3.0正式版环境的搭建

    环境: ubuntu14.04 adt-bundle-linux-x86_64 android-ndk-r9d-linux-x86_64 cocos2d-x-3.0正式版 apache-ant 1.9 ...

  7. Linux实验楼学习之三

    查看用户 who am i or who mom likes who 命令其它常用参数 参数 说明 -a 打印能打印的全部 -d 打印死掉的进程 -m 同am i,mom likes -q 打印当前登 ...

  8. 2018-2019-2 网络对抗技术 20165324 Exp3:免杀原理与实践

    2018-2019-2 网络对抗技术 20165324 Exp3:免杀原理与实践 免杀原理及基础问题回答 免杀 1. 一般是对恶意软件做处理,让它不被杀毒软件所检测.也是渗透测试中需要使用到的技术. ...

  9. Vagrant配置虚拟机

    慕课上学习.需要安装 vagrant  VirtualBox .box文件和.iso文件一样都是镜像文件.可以在官网下载https://www.vagrantup.com/docs/ 点击boxs之后 ...

  10. 搭建私有npm私库(使用verdaccio)

    搭建 npm 离线服务器 为什么要搭建npm 服务器 原因: 公司内部开发的私有包,统一管理,方便开发和使用 安全性,由于公司内部开发的模块和一些内容并不希望其他无关人员能够看到,但是又希望内部能方便 ...