20165228 2017-2018-2 《Java程序设计》第4周学习总结
20165228 2016-2017-2 《Java程序设计》第4周学习总结
教材学习内容总结
- 子类与继承
- 子类的定义:使用关键词extends
 class 子类名 extends 父类名{
 ...
 }
 - 一个子类只能有一个父类,子类继承父类的属性与行为,并可增加其新的属性和行为。Object是所有类的祖先类,若一个类声明中未使用extends关键词,则默认是Object的子类。习惯称子类与父类的关系为"is-a"关系
 
- 子类的继承性
- 当子类和父类在同一个包中时,那么子类继承其父类中不是private的成员变量(方法)作为自己的成员变量(方法)
- 当子类和父类不在同一个包中时,子类只继承父类中的protected和public访问权限的成员变量作为子类的成员变量。同样,子类只继承父类的protected和public访问权限的方法作为子类的方法
- 关于protected的说明:一个类中的protected的成员变量和方法可以被它的子孙类继承。
- 如果用D类再D本身创建一个对象,那么该对象总是可以通过"."运算符访问继承的或自己定义的protected变量及方法。
- 如果在另一个类中,例如在Other类中用D类创建一个对象object,该对象通过"."运算符访问protected变量及方法时,对于子类D自己声明的protected成员变量和方法,只要Other类和D类在同一个包中,object对象就可以访问这些protected成员变量和方法。对于子类D从父类继承的protected成员变量和方法,只要Other类和这些protected成员变量和方法所在的祖先类在同一个包中,object类对象能访问继承的protected变量和方法
 
- 子类与对象
- 子类不继承父类的私有成员变量
- 子类与父类不在同一个包中,子类不继承父类的友好成员变量
- instanceof运算符是Java独有的双目运算符,其左边的操作元是对象,右边的操作元是类。当左边的操作元是右边的类或其子类所创建的对象时,运算结果是true,否则是false
 
- 成员变量的隐藏和方法重写
- 子类声明的成员变量名字和从父类继承而来的成员变量的名字相同时,子类就会隐藏所继承的成员变量
- 子类隐藏继承的的成员变量的特点:
 子类对象以及子类自己定义的方法操作与父类同名的成员变量是指子类重新声明的这个成员变量
 子类继承的方法所操作的成员变狼一定是被子类继承或隐藏的成员变量
- 子类继承的方法只能操作子类继承和隐藏的成员变量。子类新定义的方法可以操作子类继承和子类新声明的成员变量,但无法操作子类隐藏的成员变量(需使用super)
- 方法重写(方法覆盖):子类可以通过重写可以隐藏已继承的方法。指子类中定义一个方法,这个方法的类型和父类的方法的类型一致或者是父类的方法的类型的子类型,并且方法的名字、参数个数、参数类型和父类的方法完全相同
- 如果子类可以继承父类的某个方法,那子类就有权利重写这个方法。
- 重写目的:把父类的状态和行为改变为自身的状态和行为
- 重写方法既可以操作继承的成员变量、调用继承的方法,也可以操作子类新声明的成员变量、调用新定义的其他方法,但无法操作被子类隐藏的成员变量和方法(需使用关键词super)
- 重写注意事项:重写父类方法时,不允许降低方法的访问权限,但可以提高权限
 访问权限从高到底的排列顺序:public、protected、友好的、private
 
- super的使用
- 子类一旦隐藏了继承的成员变量(方法),那么子类创建的对象不再拥有该变量(不能调用该方法),该变量(该方法的调用权)归关键词super所有。
- 如果子类想使用被子类隐藏的成员变量和方法
 访问和调用被子类隐藏的变量x:
 super.x 
访问和调用被子类隐藏的方法play():
    super.play()    
- final关键字
- final关键字可修饰类、成员变量和方法中的局部变量
- final类:使用final声明,不可继承也不能有子类
 final class A {
 ...
 }
 - final方法:修饰父类中的一个方法时,这个方法不允许子类重写。不允许子类隐藏可以继承的final方法
 
- 常量
- 成员变量或局部变量被修饰为final时,它就是常量,在声明时无默认值。所以要求再声明常量时指定它的值
 
- abstract类和abstract方法
abstract class A {
 ...
 }
 abstract int min(int x,int y);
 - 对于abstract方法,只允许声明,不允许实现(没有方法体),不允许使用final(及static)和abstract同时秀是一个方法和类。即abstract方法必须是实例方法
- abstract类只关心操作,而不关心细节
- abstract类中可以有abstract方法,也可以有非abstract方法(可以没有abstract方法)
- abstract类不能用new运算符创建对象
 
- 接口
- 使用interface来定义一个接口,接口定义包括接口声明和接口体
 interface 接口名 {
 常量声明+抽象方法(访问权限一定是public)
 }
 - interface前面加上public,则这个public接口可以被任何一个类实现。如果不加public,则称作友好接口,只能被与该接口在同一个包中的类实现
 - 接口可被继承,可通过extends声明一个接口是另一个接口的自接口。由于接口中的方法和常量都是public类,子接口将继承父接口的全部方法和常量
 - 接口属于引用型变量,接口变量中可以存放实现该接口的类的实例的引用,即存放对象的引用
 - 接口回调:把实现某一接口的类创建的对象的引用赋值给该接口声明的接口变量,那么该接口变量就可以调用被类实现的接口方法。实际上,当接口变量调用被类实现的接口方法时,就是通知相应的对象调用这个方法
 - 接口参数:如果准备给一个方法的参数传递一个数值,可能希望该方法的参数的类型是double型,这样就能向该参数传递byte、int、long、float和double型数据
 - 如果一个方法的参数是接口类型,可以将任何实现该接口的类的实例的引用传递给该接口参数
 
- abstract类与接口的比较:
- abstract类和接口都可以有abstract方法
- 接口只可以有常量不可以有变量;而abstract类既可以有常量也可以有变量
- abstract类也可以有非abstract方法,接口不可以
 
教材学习中的问题和解决过程
- 问题1:如何将对象的上转型对象强制转换到一个子类对象?
- 问题1解决方案:还未解决,虽然百度过这个问题,但是仍然没有明白如何操作
- 问题2:this可以访问被隐藏的变量和方法,和super的区别是什么?
- 问题2解决方案:通过搜索资料,大概如下:
 不同点:
 1、super()主要是对父类构造函数的调用,this()是对重载构造函数的调用
 2、super()主要是在继承了父类的子类的构造函数中使用,是在不同类中的使用;this()主要是在同一类的不同构造函数中的使用
 相同点:
 1、super()和this()都必须在构造函数的第一行进行调用,否则就是错误的
- 问题3:使用IDEA调试带中文的程序时,会提示“不可映射的GBK字符”
- 问题3解决方案:Setting->File Encodings->IDE Encoding选择utf-8,不要选择“system default”
 同时,Default encoding for properties files 也选择 UTF-8
代码调试中的问题和解决过程
- 问题1:运行Example5_8时提示“非法字符:’\u3008’”
- 问题1解决方案:写代码时,输入法的全半角问题,切换到英文输入法,把报错行重新输入即可
代码托管

(statistics.sh脚本的运行结果截图)
上周考试错题总结
- 错题1及原因,理解情况
  
 原因:通过aa与55按位与计算后得到FF,没多加思考就选择了A
- 错题2及原因,理解情况
  
 原因:将这道题想得太简单,只注意到了将-2的二进制数右移一位,即除以2后的值
- 错题3及原因,理解情况
  
 原因:对于这道题的B选项不太确定,但是由于short的取值范围为-32768~32767,于是我把D选项给排除掉,选择了BC
- 错题4及原因,理解情况
  
 原因:这道题算是粗心大意吧,没有注意到“Float”,以为就是普通的浮点型数据
- 错题5及原因,理解情况
  
 原因:我对这道题的B选项不确定,所以就只选择了CD
其他(感悟、思考等,可选)
随着学习进度地不断推进,我发现以前每天敲一点代码然后把学习的任务留到周末的方法效果很差。每一章的内容都很多,我将调整自己的学习时间,每天学一点然后将所学部分的代码敲了,才会引发更加深入的思考和增强理解
学习进度条
| 代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
|---|---|---|---|---|
| 目标 | 5000行 | 25篇 | 400小时 | |
| 第一周 | 235/235 | 1/1 | 15/15 | |
| 第二周 | 224/459 | 2/3 | 15/30 | |
| 第三周 | 443/902 | 1/4 | 15/73 | |
| 第四周 | 577/1479 | 2/6 | 17/90 | 
- 计划学习时间:20小时 
- 实际学习时间:17小时 
20165228 2017-2018-2 《Java程序设计》第4周学习总结的更多相关文章
- 学号 20175212 《Java程序设计》第九周学习总结
		学号 20175212 <Java程序设计>第九周学习总结 教材学习内容总结 一.MySQL数据库管理系统 1.在官网上下载并安装MySQL 2.在IDEA中输入测试代码Connectio ... 
- 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程序设计>第一周学习总结 教材学习内容总结 刚开始拿到这么厚一本书说没有压力是不可能的,开始从头看觉得很陌生进入不了状态,就稍微会有一点焦虑的感觉.于是就 ... 
- 20145337 《Java程序设计》第九周学习总结
		20145337 <Java程序设计>第九周学习总结 教材学习内容总结 数据库本身是个独立运行的应用程序 撰写应用程序是利用通信协议对数据库进行指令交换,以进行数据的增删查找 JDBC可以 ... 
- 20145337 《Java程序设计》第二周学习总结
		20145337 <Java程序设计>第二周学习总结 教材学习内容总结 Java可分基本类型与类类型: 基本类型分整数(short.int.long).字节(byte).浮点数(float ... 
- 20145218《Java程序设计》第一周学习总结
		20145218 <Java程序设计>第一周学习总结 教材学习内容总结 今天下午看了Java学习的视频,感觉很是新奇,之前觉得Java学起来是艰难枯燥的,但通过第一章的学习觉得如果自己可以 ... 
- 《Java程序设计》第九周学习总结
		20145224 <Java程序设计>第九周学习总结 第十六章 整合数据库 JDBC入门 ·数据库本身是个独立运行的应用程序 ·撰写应用程序是利用通信协议对数据库进行指令交换,以进行数据的 ... 
随机推荐
- 2017-5-19&5-23/系统性能指标
			1. 系统性能指标包括哪些? 业务指标.资源指标.中间件指标.数据库指标.前端指标.稳定性指标.批量处理指标.可扩展性指标.可靠性指标. 1)业务指标:主要包括并发用户数.响应时间.处理能力. 指标 ... 
- 2015-09-28认识js1
			Javascript 一.特点 1. 区分大小写 2. 弱类型变量,只能用关键字“var" 3.注释 /*….*/ 二. 变量 1.变量通过关键字var声明. 2.var ... 
- Android AES加密报错处理:javax.crypto.IllegalBlockSizeException: error:1e00007b:Cipher functions:OPENSSL_internal:WRONG_FINAL_BLOCK_LENGTH
			一.问题说明 今天写AES加/解密功能的apk,设想是四个控件(测试用的,界面丑这种东西请忽略) 一个编缉框----用于输入要加密的字符串 一个文本框----用于输出加密后的字符串,和加密后点击解密按 ... 
- windows开机锁定小键盘
			1.启动注册表编缉器 按下windows+R键,输入regedit回车启动注册表编缉器 2.修改注册表默认值 展开HKEY_USERS\.DEFAULT\Control Panel\Keyboard将 ... 
- java 常用命令
			#查看堆使用情况jmap -heap [pid]#查看占用内存高的对象jmap -histo:live [pid] | head -n 100#查看占用内存高的对象,dump成文件,线下分析jmap ... 
- puppeteer 爬虫 pdf 截图 自动化
			puppeteer简介 puppeteer 翻译是操纵木偶的人,利用这个工具,我们能做一个操纵页面的人.puppeteer是一个nodejs的库,支持调用Chrome的API来操纵Web,相比较Sel ... 
- linux用户管理 查看用户信息
			LINUX系统中用户登录查看命令 W命令 [root@ssgao1987 ~]# w 04:57:01 up 11:50, 2 users, load average: 0.00, 0.00, 0 ... 
- learning ddr mode register MR1
- 自定义xadmin后台首页
			登陆xadmin后台,首页默认是空白,可以自己添加小组件,xadmin一切都是那么美好,但是添加小组件遇到了个大坑,快整了2个礼拜,最终实现想要的界面.初始的页面如图: 本机后台显示这个页面正常,do ... 
- 图的关键路径,AOE,完整实现,C++描述
			body, table{font-family: 微软雅黑; font-size: 13.5pt} table{border-collapse: collapse; border: solid gra ... 
