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是一种RoleshowBlood(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的时候出现了问题
    1071527-20170317233618885-1307098996.png
    后来在run edit中发现自己把各项都改成了Guest
    1071527-20170317233758995-323342799.png
  • 解决方法:把run edit中各项改了
    1071527-20170317234026573-2040249044.png
    运行结果正确
    1071527-20170317234100932-1426291407.png

代码托管

1071527-20170319190830479-2108887282.png

上周考试错题总结

  • 填空: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/2001/118/18
第二周153/3531/218/36
第三周356/7091/324/60
第四周450/12591/428/85

参考:软件工程软件的估计为什么这么难,软件工程 估计方法

  • 计划学习时间:30小时

  • 实际学习时间:28小时

  • 改进情况:计划学习时间由于上周没有达成,所以这周仍然定为30小时,学习时间有所提高。

  • 有空多看看现代软件工程 课件 软件工程师能力自我评价表

参考资料

  • Java学习笔记(第8版)

  • 《Java学习笔记(第8版)》学习指导

转载于:https://www.cnblogs.com/20155305ql/p/6537588.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/393453.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

leetcode29. 两数相除(位运算)

给定两个整数,被除数 dividend 和除数 divisor。将两数相除,要求不使用乘法、除法和 mod 运算符。 返回被除数 dividend 除以除数 divisor 得到的商。 整数除法的结果应当截去(truncate)其小数部分,例如:…

【eclipse转idea的第一天】配置idea

为什么80%的码农都做不了架构师?>>> 导入maven项目 设置maven(全局) 为了不然才转idea的码友们重复我犯过的错,我这儿截图步骤说明下: 这里是列表文本这里是列表文本idea的设置有两种:全局,局部(我这么叫的…

node.js web框架_使用Node.js进行Web爬取的终极指南

node.js web框架So what’s web scraping anyway? It involves automating away the laborious task of collecting information from websites.那么,什么是网络抓取? 它涉及自动化从网站收集信息的艰巨任务。 There are a lot of use cases for web s…

java局部内部类 final_Java的局部内部类以及final类型的参数和变量

Thinking In Java里面的说法(***正确的说法): 如果定义一个匿名内部类,并且希望它使用一个在其外部定的对象,那么编译器会要求其参数引用是final 的。publicclassTester {publicstaticvoidmain(String[] args) {A a newA();C c newC();c.shou…

Vmware 安装虚拟工具 (二)

打开虚拟机,以root超级用户登陆,菜单栏选择虚拟机,install安装虚拟机 拷贝虚拟工具到 在根目录下建立文件夹,并将工具拷贝到该文件夹,例如vmtool 打开终端,进入该目录开始安装 如图,进入目录解压…

git与svn的区别 ?Git 与 SVN那个更好?

git与svn的区别 : http://www.360doc.com/content/12/1228/20/11220452_256857021.shtml 在版本控制系统的选型上,是选择Git还是SVN? 对于开源项目来说这不算问题。使用Git极大地提高了开发效率、扩大了开源项目的参与度、 增强了版本控制系统…

强化学习简介

by ADL通过ADL Reinforcement Learning is an aspect of Machine learning where an agent learns to behave in an environment, by performing certain actions and observing the rewards/results which it get from those actions.强化学习是机器学习的一个方面&#xff0…

leetcode1111. 有效括号的嵌套深度(栈)

给你一个「有效括号字符串」 seq,请你将其分成两个不相交的有效括号字符串,A 和 B,并使这两个字符串的深度最小。 不相交:每个 seq[i] 只能分给 A 和 B 二者中的一个,不能既属于 A 也属于 B 。 A 或 B 中的元素在原字…

利用Arcgis for javascript API绘制GeoJSON并同时弹出多个Popup

1.引言 由于Arcgis for javascript API不可以绘制Geojson,并且提供的Popup一般只可以弹出一个,在很多专题图制作中,会遇到不少的麻烦。因此本文结合了两个现有的Arcgis for javascript API扩充库,对其进行改造达到绘制Geojson并同…

java 线程简介_java多线程介绍

java多线程介绍多线程的基本实现进程指运行中的程序,每个进程都会分配一个内存空间,一个进程中存在多个线程,启动一个JAVA虚拟机,就是打开个一个进程,一个进程有多个线程,当多个线程同时进行,就…

webpack入门——构建简易版vue-cli

用vue-cli1/2搭建一个vue项目时,可以看到有很多关于webpack配置的文件。我们不需要知道那些繁琐的配置文件有什么作用,只需在控制台输入npm run dev,项目自动启动,我们就可以愉快的写业务代码了。 虽然vue-cli帮我们做好了一切&am…

leetcode43. 字符串相乘

给定两个以字符串形式表示的非负整数 num1 和 num2,返回 num1 和 num2 的乘积,它们的乘积也表示为字符串形式。 示例 1: 输入: num1 “2”, num2 “3” 输出: “6” 代码 class Solution {public String multiply(String num1, String num2) {if(n…

作业二:个人博客作业内容:需求分析

作业二:个人博客作业内容:需求分析 怎样与用户有效沟通获取用户的真实需求?访谈,正式访谈系统分析员将提出一些事先准备好的具体问题;非正式访谈中,分析人员将提出一些用户可以自由回答的开放性问题&#…

HBase数据备份及恢复(导入导出)的常用方法

一、说明 随着HBase在重要的商业系统中应用的大量增加,许多企业需要通过对它们的HBase集群建立健壮的备份和故障恢复机制来保证它们的企业(数据)资产。备份Hbase时的难点是其待备份的数据集可能非常巨大,因此备份方案必须有很高的…

react和react2_为什么React16是React开发人员的福气

react和react2by Harsh Makadia通过苛刻马卡迪亚 为什么React16是React开发人员的福气 (Why React16 is a blessing to React developers) Just like how people are excited about updating their mobile apps and OS, developers should also be excited to update their fr…

jzoj4598. 【NOIP2016模拟7.9】准备食物

一个th的题(a gensokyo) 难度系数在该知识点下为$2.1$ 区间xor我们很明显会想到trie树,将每一个区间$l~r$异或和拆成$sum[l-1]$ $sum[r]$两个数的异或 注意到二进制的性质,比当前低的位即使都取1加起来都没有这位选1答案高&#x…

java number转string_Java Number类, Character类,String类

字符串在Java编程中广泛使用,字符串就是一系列字符(由一个个的字符组成)。 在Java编程语言中,字符串被视为对象。Java平台提供String类来创建和操作字符串。1. 创建字符串创建字符串的最直接方法是 -String str "Hello world!";每当它在代码中…

Android商城开发系列(二)——App启动欢迎页面制作

商城APP一般都会在应用启动时有一个欢迎界面,下面我们来实现一个最简单的欢迎页开发:就是打开商城App,先出现欢迎界面,停留几秒钟,自动进入应用程序的主界面。 首先先定义WelcomeActivity布局,布局非常简单…

DELL安装不了mysql_Windows 版本 Mysql 8.x 安装

1、官网下载安装包百度网盘链接:https://pan.baidu.com/s/1cFRbQM5720xrzMxbgjPeyA提取码:xlz72、解压安装包并新建一个文件夹作为安装目录(mysqlInstall)3、配置 Mysql 环境变量4、在解压好的目录下新建一个 my.ini 文件(注意:my.ini 文件和…

lambda 使用_如何使用Lambda和API网关构建API

lambda 使用Do you want to access your database, control your system, or execute some code from another website? An API can do all of this for you, and they’re surprisingly easy to set up.您是否要访问数据库,控制系统或从其他网站执行一些代码&…