20155207 2006-2007-2 《Java程序设计》第4周学习总结
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的属相和方法,由于这个是父类的隐私,所以子类虽然是继承了,但是没有可以访问这些属性和方法的引用,所以相当于没有继承到。很多时候,可以理解为,没有继承。
多态:就是父类引用可以持有子类对象。这时候只能调用父类中的方法,而子类中特有方法是无法访问的,因为这个时候(编译时)你把他看作父类对象的原因,但是到了运行的时候,编译器就会发现这个父类引用中原来是一个子类的对像,所以如果父类和子类中有相同的方法时,调用的会是子类中的方法,而不是父类的。
- 第七章:接口的作用?
接口的作用简单一点就是:接口是用来标记类的,不同的类属于不同的接口(通过向上转型),管理接口比管理各种各样的类方便多了,接口体现了抽象的观点
代码调试中的问题和解决过程
代码托管
- 代码提交过程截图:
- 代码量截图:
上周考试错题总结
- 填空:Linux Bash中,(grep )命令可以进行全文搜索
- 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 |
计划学习时间:25小时
实际学习时间:20小时
改进情况:
参考资料
20155207 2006-2007-2 《Java程序设计》第4周学习总结的更多相关文章
- 20155207王雪纯 2006-2007-2 《Java程序设计》第二周学习总结
20155207王雪纯 2006-2007-2 <Java程序设计>第二周学习总结 教材学习内容总结 整数类型:short(占2字节).int()占4字节.long(占8字节) " ...
- 20155207 2016-2017-2 《Java程序设计》第九周学习总结
20155207 2016-2017-2 <Java程序设计>第九周学习总结 教材学习内容总结 第16章 整合数据库 16.1 JDBC入门 16.1.1 JDBC简介 数据库本身是个独立 ...
- 20155313 2016-2017-2 《Java程序设计》第一周学习总结
20155313 2016-2017-2 <Java程序设计>第一周学习总结 教材学习内容总结 本周的Java学习进入了一个全新的阶段,对于我这样的并没有每天花费时间钻研的同学来说,最后几 ...
- 20145231 《Java程序设计》第一周学习总结
20145231 <Java程序设计>第一周学习总结 教材学习内容总结 Java三大平台Java SE,Java EE,Java ME.其中,Java SE是我们学习的基础. Java S ...
- 20145238-荆玉茗 《Java程序设计》第一周学习总结
20145238 <Java程序设计>第一周学习总结 教材学习内容总结 Java三大平台:由于java领域的应用越来越广,根据不同级别的应用开发区分了不同的应用版本,后正式更名为Java ...
- 20145213《Java程序设计》第九周学习总结
20145213<Java程序设计>第九周学习总结 教材学习总结 "五一"假期过得太快,就像龙卷风.没有一点点防备,就与Java博客撞个满怀.在这个普天同庆的节日里,根 ...
- 20145213《Java程序设计》第二周学习总结
20145213<Java程序设计>第二周学习总结 教材学习内容总结 本周娄老师给的任务是学习教材的第三章--基础语法.其实我觉得还蛮轻松的,因为在翻开厚重的书本,一股熟悉的气息扑面而来, ...
- 20145213《Java程序设计》第一周学习总结
20145213<Java程序设计>第一周学习总结 教材学习内容总结 期待了一个寒假,终于见识到了神秘的娄老师和他的Java课.虽说算不上金风玉露一相逢,没有胜却人间无数也是情理之中,但娄 ...
- 21045308刘昊阳 《Java程序设计》第九周学习总结
21045308刘昊阳 <Java程序设计>第九周学习总结 教材学习内容总结 第16章 整合数据库 16.1 JDBC入门 16.1.1 JDBC简介 数据库本身是个独立运行的应用程序 撰 ...
- 20145330孙文馨 《Java程序设计》第一周学习总结
20145330孙文馨 <Java程序设计>第一周学习总结 教材学习内容总结 刚开始拿到这么厚一本书说没有压力是不可能的,开始从头看觉得很陌生进入不了状态,就稍微会有一点焦虑的感觉.于是就 ...
随机推荐
- 设计模式之Proxy(代理)
设计模式之Proxy(代理) 板桥里人banq http://www.jdon.com 2002/04/21/ 理解并使用设计模式,能够培养我们良好的面向对象编程习惯,同时在实际应用中,可以如鱼得水, ...
- jquery ui tabs(选项卡)插件
参考文档:http://www.css88.com/jquery-ui-api/tabs/ html代码: <div id="tabs"> <ul> < ...
- JvisualVM的使用【转载】
VisualVM 是一款免费的,集成了多个 JDK 命令行工具的可视化工具,它能为您提供强大的分析能力,对 Java 应用程序做性能分析和调优.这些功能包括生成和分析海量数据.跟踪内存泄漏.监控垃圾回 ...
- problem during schema drop, statement alter table ACT_RU_VARIABLE
将activiti的databaseSchemaUpdate设置为drop-create抛出DbSqlSession 错误 发布于2015-02-14 16:03:57 浏览7851次 Excepti ...
- curl 抓取页面信息
<?php // 1. 初始化 $ch = curl_init(); // 2. 设置选项,包括URL curl_setopt($ch, CURLOPT_URL, "www" ...
- Spark Streaming和Kafka集成深入浅出
写在前面 本文主要介绍Spark Streaming基本概念.kafka集成.Offset管理 本文主要介绍Spark Streaming基本概念.kafka集成.Offset管理 一.概述 Spar ...
- Java并发基础概念
Java并发基础概念 线程和进程 线程和进程都能实现并发,在java编程领域,线程是实现并发的主要方式 每个进程都有独立的运行环境,内存空间.进程的通信需要通过,pipline或者socket 线程共 ...
- Spring(十)之自定义事件
编写自定义事件的简单流程如下: (1)编写CustomEvent.java package com.tutorialspoint; import org.springframework.context ...
- android TextView里边实现图文混配效果
做的游戏攻略中的图文载入已经用TextView实现.但看到网易新闻里的内容.点击图片能够调到一个新的Activity ,感觉也像Textview 实现的,但不知道怎么弄,想想能够通过动态载入Textv ...
- centos6.4 安装code::blocks
今天下午闲着没事尝试在自己的PC中的CentOS上装一个Code::Blocks,因为是Linux菜鸟折腾了一下午才基本算搞定但依然有疑惑: 在网上各种谷哥度娘最后才发现还是官方的文档最靠谱:看这里. ...