20155207 2006-2007-2 《Java程序设计》第4周学习总结

教材学习内容总结

  • ISP原则:一个类对另一个类的依赖应该限制在最小化的接口上。
  • OCP原则:软件构成(类,模块,方法等)向扩展行为开放,向修改行为关闭。
  • Is-a原则:指的是类的父子继承关系,例如类A是另一个类B的子类(类B是类A的父类)。
  • LSP原则:子类必须能够用来当作基类使用。如果类A继承类B,任何能使用A的地方,B也同样可以使用。

理解继承、封装、多态

继承

子类继承父类中所以的属性和方法,但是对于private的属相和方法,由于这个是父类的隐私,所以子类虽然是继承了,但是没有可以访问这些属性和方法的引用,所以相当于没有继承到。很多时候,可以理解为,没有继承。

  • 关键字extends:表示子类会继承父类的行为,并可能在父类的基础上扩充一些行为。

  • is—a关系:子类只能继承一个父类。子类和父类间会有一个is—a的关系,中文成为“是一种”。

    检查语法逻辑是否正确,方式是从=号右边往左读:右边是不是一种左边呢?(即右边类是不是左边类的子类)

继承语法细节
  • 变量被定义成private,无法直接在子类中存取,只能通过getName()、getLevel()、getBlood()来取得。

  • 如果方法中没有同名参数,this可以省略,不过基于程序可读性,this更易读。

java.lang.Object
  • toString:toString()方法返回该对象的字符串表示。toString()是由对象的类型和其哈希码唯一确定,同一类型但不相等的两个对象分别调用toString()方法返回的结果可能相同。
  • equlas:equlas()方法的正确理解应该是:判断两个对象是否相等。重写equals()方法必须重写hasCode()方法。
  • hashCode:hashCode()方法返回一个整形数值,表示该对象的哈希码值。两个对象相等 <=> equals()相等 => hashCode()相等。因此,重写equlas()方法必须重写hashCode()方法,以保证此逻辑严格成立,同时可以推理出:hasCode()不相等 => equals()不相等 <=> 两个对象不相等。
  • instanceof:如果 object 是 class 的一个实例,则 instanceof 运算符返回 true。如果 object 不是指定类的一个实例,或者 object 是 null,则返回 false
多态
  • 什么是多态?以抽象讲法解释,就是使用单一接口操作多种类型的对象。

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

UML:

它是一个支持模型化和软件系统开发的图形化语言,为软件开发的所有阶段提供模型化和可视化支持,包括由需求分析到规格,到构造和配置。 UML是一种建模语言,而不是一个开发过程。

覆盖(Override):

覆盖(Override)与重载(overload)的区别:覆盖,从字面就可以知道,它是覆盖了一个方法并且对其重写,以求达到不同的作用;重载,它是指我们可以定义一些名称相同的方法,通过定义不同的输入参数来区分这些方法,然后再调用时,VM就会根据不同的参数样式,来选择合适的方法执行。

重新定义行为
  • 什么是重新定义?在继承父类之后,定义与父类中相同的方法部署,但执行内容不同,这被称为重新定义。
  • 将子类中方法提升至父类中定义,子类引用该方法要重新定义fight()的实际行为
权限关键字protected
  • 被生命为protected的成员,相同包中的类可以直接存取‘不同包中的类可以在继承后的子类直接存取。

  • 在java中,如果想取得父类中的方法定义,可以在调用方法前,加上super关键字

-使用super关键字调用的父类方法,不能定义为private(因为这就限定只能在类内使用)

重新定义方法要注意,对于父类中的方法权限,只能扩大不能缩小。若原来成员public,子类重新定义时不可为private或protected

  • 关于private、protected、public
构造函数
  • 如果想执行父类中某构造函数,可以使用super()指定,例如

  • 如果子类构造函数中没有制定执行父类中哪个构造函数,默认会调用父类中无参数构造函数

P176
class Some {
some() {
System.out.println("调用Some()");
}
}
class Other extends Some {
Other() {
super();
System.out.println("调用Other()");
}
}
抽象方法、抽象类
  • abstract:如果某方法区块中真的没有任何程序代码操作,可以使用abstract便是该方法为抽象方法,该方法不用撰写{}区块,直接“;”结束即可。

  • abstract修饰的类为抽象类,其除了不能通过new实例化对象外,和一般的类没有什么不同。可以有静态成员(静态方法,静态变量)一般成员,构造方法,可以被继承,另外还可以有abstract修饰的方法,类中含有 abstract修饰的方法只能是abstract类。与接口比较,它是单继承的,接口是多实现的

  • JAVA中规定内含抽象方法的类,一定要在class前标示abstract。子类如果要继承抽象类,对于抽象方法有两种做法:第一种做法是继续标示该方法为abctract(在class钱标示abstract);另一种是操作抽象方法。

final关键字
  • 在指定变量值之后,就不想在改变变量值,;可以在声明变量时加上final限定。

  • 如果对象数据成员被声明为final,但没有明确使用=指定值,那么表示延迟对象成员值的指定,在构造函数执行流程中,一定要有对该数据成员指定值的动作,否则编译错误。

  • 子类不可以重新定义final方法

接口与多态

何为接口?

接口就是一段程序中可能有很多类会有共同的行为,但这些类本身并不具有任何关系,如果使用继承的话程序架构会不合理,所以使用统一的接口表示这些类具有共同的行为

接口(interface)定义行为:

接口与类属于同一层次,实际上,接口是一种特殊的抽象类。

implements:是实现接口的方法。

思考题:接口与抽象类的别?

接口是公开的,里面不能有私有的方法或变量,是用于让别人使用的,而抽象类是可以有私有方法或私有变量的。

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

  • 第六章:继承和多态有什么区别?

继承,子类继承父类中所以的属性和方法,但是对于private的属相和方法,由于这个是父类的隐私,所以子类虽然是继承了,但是没有可以访问这些属性和方法的引用,所以相当于没有继承到。很多时候,可以理解为,没有继承。

多态:就是父类引用可以持有子类对象。这时候只能调用父类中的方法,而子类中特有方法是无法访问的,因为这个时候(编译时)你把他看作父类对象的原因,但是到了运行的时候,编译器就会发现这个父类引用中原来是一个子类的对像,所以如果父类和子类中有相同的方法时,调用的会是子类中的方法,而不是父类的。

  • 第七章:接口的作用?

接口的作用简单一点就是:接口是用来标记类的,不同的类属于不同的接口(通过向上转型),管理接口比管理各种各样的类方便多了,接口体现了抽象的观点

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

代码托管

  • 代码提交过程截图:

  • 代码量截图:

上周考试错题总结

    1. 填空:Linux Bash中,(grep )命令可以进行全文搜索
    1. CH04 填空:p104 CopyArray.java 中修改int [] scores2 = Arrays.copyOf(scores1, scores1.length,使得输出的第二行只有前五个元素,修改后的代码为(int [] scores2 = Arrays.copyOf(scores1, scores1.length/2) 或int [] scores2 = Arrays.copyOf(scores1, 5) )
  • CH05 判断:private不能用在构造方法上,这样就无法创建对象了。(X)
  •   CH05 填空:Java中成员方法中引用成员变量,要使用(this)关键字

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

  • 本周最大的进步就是在敲代码是不是一味的抄书,而是加入了自己的思考。
  • 我觉得在此基础上我还应该增加学习代码的速度

学习进度条

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

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

参考资料

20155207 2006-2007-2 《Java程序设计》第4周学习总结的更多相关文章

  1. 20155207王雪纯 2006-2007-2 《Java程序设计》第二周学习总结

    20155207王雪纯 2006-2007-2 <Java程序设计>第二周学习总结 教材学习内容总结 整数类型:short(占2字节).int()占4字节.long(占8字节) " ...

  2. 20155207 2016-2017-2 《Java程序设计》第九周学习总结

    20155207 2016-2017-2 <Java程序设计>第九周学习总结 教材学习内容总结 第16章 整合数据库 16.1 JDBC入门 16.1.1 JDBC简介 数据库本身是个独立 ...

  3. 20155313 2016-2017-2 《Java程序设计》第一周学习总结

    20155313 2016-2017-2 <Java程序设计>第一周学习总结 教材学习内容总结 本周的Java学习进入了一个全新的阶段,对于我这样的并没有每天花费时间钻研的同学来说,最后几 ...

  4. 20145231 《Java程序设计》第一周学习总结

    20145231 <Java程序设计>第一周学习总结 教材学习内容总结 Java三大平台Java SE,Java EE,Java ME.其中,Java SE是我们学习的基础. Java S ...

  5. 20145238-荆玉茗 《Java程序设计》第一周学习总结

    20145238 <Java程序设计>第一周学习总结 教材学习内容总结 Java三大平台:由于java领域的应用越来越广,根据不同级别的应用开发区分了不同的应用版本,后正式更名为Java ...

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

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

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

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

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

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

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

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

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

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

随机推荐

  1. Eclipse+Maven 项目创建

    ★:jar包下载不了的话可能是镜像里没有这个版本,换个低版本的就行 ★:eclipse工程validating很慢,可以先关掉验证(一般对项目没什么影响) ★:eclipse工程pom.xml文件报错 ...

  2. iOS自动化-- 常用iOS命令

    iOS命令: 获取设备的的UDID idevice_id --list # 显示当前所连接设备的 udid instruments -s devices # 列出所有设备,包括真机.模拟器.mac i ...

  3. Python3基本数据类型(二、字符串)

    Python3字符串 ①字符串比较 1.比较字符串是否相同: ==:使用==来比较两个字符串内的value值是否相同 is:比较两个字符串的id值. 2.字符串的长度比较 len():显示字符串的长度 ...

  4. TensorFlow函数(一)tf.placeholder()函数

    tf.placeholder(dtype, shape=None, name=None) 此函数用于定义过程,在执行的时候再赋具体的值 参数: dtype:数据类型.常用的是tf.float32,tf ...

  5. Linux学习总结(十八)几个简单的文本处理工具cut sort tr split

    1 命令cut 用来截取某一个字段格式 : cut -d '分隔符' [-cf] n, n为数字,表示第几段-d:后面跟分隔符,分割符要加单引号-c:后面接的是第几个字符-f:后面接的是第几段那么意思 ...

  6. 【题解】洛谷P1373 小a和uim之大逃离(坐标DP)

    次元传送门:洛谷P1373 思路 设f[i][j][t][1/0]表示走到(i,j)时 小a减去uim的差值为t 当前是小a取(0) uim取(1) 那么转移就很明显了 f[i][j][t][]=(f ...

  7. DPI在SDN中的部署方式

    目录 在sdn中的部署分类 将DPI部署到基础设施层 将DPI部署到控制层 将DPI部署到应用层 个人总结 参考文献 在sdn中的部署分类 DPI 可以分别部署到SDN的基础设施层.控制层和应用层. ...

  8. ovs加dpdk在日志中查看更多运行细节的方法

    想查看更多dpdk+ovs的更多运行细节,可以采用以下方法,增加更多运行日志. 在终端输入: ovs-appctl vlog/set dpdk:file:dbg ovs-appctl vlog/set ...

  9. 数据库中间件mycat安装与使用

    1.下载 # wget http://dl.mycat.io/1.6-RELEASE/Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz 2.安装 ...

  10. mysql5.7关于使用到OR是否会用到索引并提高查询效率的探讨

    相信很多人在mysql中看到了where条件中使用到了or就会以为这样是不会走索引的,通常会使用union all或者in 来进行优化,事实并不是想象的这样具体问题具体分析. 下面我们来看看 首先我们 ...