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. 设计模式之Proxy(代理)

    设计模式之Proxy(代理) 板桥里人banq http://www.jdon.com 2002/04/21/ 理解并使用设计模式,能够培养我们良好的面向对象编程习惯,同时在实际应用中,可以如鱼得水, ...

  2. jquery ui tabs(选项卡)插件

    参考文档:http://www.css88.com/jquery-ui-api/tabs/ html代码: <div id="tabs"> <ul> < ...

  3. JvisualVM的使用【转载】

    VisualVM 是一款免费的,集成了多个 JDK 命令行工具的可视化工具,它能为您提供强大的分析能力,对 Java 应用程序做性能分析和调优.这些功能包括生成和分析海量数据.跟踪内存泄漏.监控垃圾回 ...

  4. problem during schema drop, statement alter table ACT_RU_VARIABLE

    将activiti的databaseSchemaUpdate设置为drop-create抛出DbSqlSession 错误 发布于2015-02-14 16:03:57 浏览7851次 Excepti ...

  5. curl 抓取页面信息

    <?php // 1. 初始化 $ch = curl_init(); // 2. 设置选项,包括URL curl_setopt($ch, CURLOPT_URL, "www" ...

  6. Spark Streaming和Kafka集成深入浅出

    写在前面 本文主要介绍Spark Streaming基本概念.kafka集成.Offset管理 本文主要介绍Spark Streaming基本概念.kafka集成.Offset管理 一.概述 Spar ...

  7. Java并发基础概念

    Java并发基础概念 线程和进程 线程和进程都能实现并发,在java编程领域,线程是实现并发的主要方式 每个进程都有独立的运行环境,内存空间.进程的通信需要通过,pipline或者socket 线程共 ...

  8. Spring(十)之自定义事件

    编写自定义事件的简单流程如下: (1)编写CustomEvent.java package com.tutorialspoint; import org.springframework.context ...

  9. android TextView里边实现图文混配效果

    做的游戏攻略中的图文载入已经用TextView实现.但看到网易新闻里的内容.点击图片能够调到一个新的Activity ,感觉也像Textview 实现的,但不知道怎么弄,想想能够通过动态载入Textv ...

  10. centos6.4 安装code::blocks

    今天下午闲着没事尝试在自己的PC中的CentOS上装一个Code::Blocks,因为是Linux菜鸟折腾了一下午才基本算搞定但依然有疑惑: 在网上各种谷哥度娘最后才发现还是官方的文档最靠谱:看这里. ...