20155231 2016-2017-2 《Java程序设计》第4周学习总结
20155231 2016-2017-2 《Java程序设计》第4周学习总结
教材学习内容总结
学习目标
- 理解封装、继承、多态的关系
- 理解抽象类与接口的区别
- 掌握S.O.L.I.D原则
- 了解模式和设计模式
- 能正确覆盖方法
- 了解垃圾回收机制
- 掌握Object类
- 掌握enum
第六章:继承与多态
封装、继承、多态
- 继承:面向对象中,子类继承父类,避免重复定义的共同行为;
- extends关键字:在继承父类的程序代码基础上,补充定义新的程序代码,扩充其原本没有的行为;
- 继承的好处:避免重复的同时,若是要对相应的数据成员名称做修改,只需要在父类中修改即可;
- is-a:子类与父类之间是is-a(是一种)关系,编写代码时可以使用is-a检查语法的逻辑是否正确:从=右边往左读,看右边是不是左边的子类。当右边不是左边的子类的时候,程序编译错误,也可能存在检查为右边可能是左边子类的不确定的结果,这时可以执行(Cast)叫程序住嘴语法,错误时抛出ClassCastException.
- 多态:单一接口操作多种类型的对象。
- is-a关系:子类只能继承一个父类,即子类“是一种”父类,可用来判断如下代码片段:
Role role1 = new Swordsman();
Swordsman swordsman = new Role();
- 重新定义:在继承父类之后,定义与父类中相同的方法部署,但执行内容不同;在重新定义父类中某个方法时,子类必须撰写与父类方法中相同的签署;
抽象类
- 方法区块中没有任何程序代码操作,使用abstract标示该方法为抽象方法,,类中若有方法没有操作,并且标示为abstract,表示类定义不完整,称为抽象类。
- java中可以使用interface来定义抽象的行为和外观。
- 子类继承抽象类的两种做法:继续标示该方法或者操作抽象方法。
- 为了工作的合理和编写的方便,写程序是可以先创建实例,然后执行go()方法过程中调用抽象方法。
继承语法细节
- protected成员:被声明为protected的成员,相同包中的类可以直接存取,不同包中的类可以在继承后的子类直接存取;
- 重新定义的细节:重新定义方法时,若只是希望在父类中方法前后做点加工,可在父类中直接添加,想取得父类中的方法定义,只需在调用前加上super关键字;(使用super关键字调用的父类方法不能定义为private,同时,重新定义方法时,对于父类中的方法权限只能扩大不能缩小)
- JDK5之后,如果返回类型是父类中方法返回类型的子类,可通过编译;
- 构造函数:如果子类构造函数中没有指定调用父类中那个构造函数,默认会调用父类中无参数构造函数;
- final关键字:class前使用final,表示这是最后一个类不会再有子类;定义方法为final表示最后一次定义方法;
- java.lang.Object:定义类时若没有extends关键字,那一定是继承java.lang.Object;(顶层父类,Object上定义的方法所有对象都继承下来了,只要没有定义为final,都可以重新定义)
- tostring()、equals()都是Object类定义的方法,返回值类型分别为字符串型和布尔型;
- instanceof运算符:判断对象是否由某个类创建,左操作数是对象,右操作数是类,只要左操作数是右操作数的子类型,返回结果就为true;
- 垃圾收集:程序执行流程中无法再使用某个对象,该对象就是徒耗内存的垃圾,就会被回收;
第七章:接口与多态
接口
- 接口:可用于定义行为但不操作(表示拥有行为,是多重继承的一种方式),类要操作接口,就必须有implements关键字(为了生成与特定接口相符合的类);
- 接口中定义的方法的处理方式:操作接口中定义的方法、再度将其标示为abstract;
接口语法细节
- 接口的默认:接口中的方法没有操作时,一定得是公开且抽象(interface关键字:定义抽象行为与外观);
- 枚举常数:为了在维护程序时使程序清晰;
- 匿名内部类:对于只使用一次的继承某个类的子类或接口操作类,不需为这些类定义名称;
equals()
- equals()方法是Object类有定义的方法,程序代码:
public boolean equals(Object obj){
return (this==obj);
}
2.instanceof运算符:判断对象是否由某个类创建,左操作数是对象,右操作数十类。
enum枚举常数
enum可用于定义枚举常数。enum定义了特殊类,继承自java.lang.Enum,由编译程序处理,直接撰写会被拒绝。
教材学习中的问题和解决过程
教材学习中的问题和解决过程
- 问题1:如何判断一段程序是否是合法的多态语法?
Swimmer swimmer = new Shark();
Swimmer swimmer = new Human();
Swimmer swimmer = new Submarine();\\编译通过
- 解决过程:判断右边是否拥有左边的行为,即右边对象是否操作了左边接口;
Shark shark = swimmer;\\编译失败
因为有Swimmer行为的不一定是shark实例,此时需要加上扮演语法:
Shark shark = (Shark) swimmer;
即执行时参考shark实例,让其扮演shark(实际参考对象与扮演对象要一致,否则报错);
代码调试中的问题和解决过程
问题:在编译时找不到类
解决:在编译时用classpath规定路径。
代码托管
代码提交过程截图
代码量截图
上周考试错题总结
- 2.填空:~0b1010的十进制值是(-11)
- 4.填空:System.out.println(“”+52+25);的结果是(5225)
- 18.CH04 填空: p109 Average.java 求1,2,3,4,5的平均值的命令是(java cc.openhome.Average 1 2 3 4 5
- 26.CH05 填空:调用p145 sum函数计算1+2+3+4+5的代码是(MathTool.sum(1,2,3,4,5))
- 28.CH05 填空:Java中类的成员变量必须进行初始化,否则会出语法错误。(X)
其他(感悟、思考等,可选)
本次学习中,有很多新的概念,和之前的c语言有了很大区别。没有太懂,还需要接着学习。
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第四周 | 334/732 | 1/4 | 12/80 |
计划学习时间:20小时
实际学习时间:12小时
参考资料
20155231 2016-2017-2 《Java程序设计》第4周学习总结的更多相关文章
- 20155305乔磊2016-2017-2《Java程序设计》第九周学习总结
20155305 2016-2017-2 <Java程序设计>第九周学习总结 教材学习内容总结 JDBC入门 JDBC简介 1.JDBC是java联机数据库的标准规范,它定义了一组标准类与 ...
- 20155331 2016-2017-2 《Java程序设计》第九周学习总结
20155331 2016-2017-2 <Java程序设计>第九周学习总结 教材学习内容总结 JDBC是什么? JDBC代表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程序设计>第一周学习总结 教材学习内容总结 刚开始拿到这么厚一本书说没有压力是不可能的,开始从头看觉得很陌生进入不了状态,就稍微会有一点焦虑的感觉.于是就 ...
- 20145337 《Java程序设计》第九周学习总结
20145337 <Java程序设计>第九周学习总结 教材学习内容总结 数据库本身是个独立运行的应用程序 撰写应用程序是利用通信协议对数据库进行指令交换,以进行数据的增删查找 JDBC可以 ...
- 20145337 《Java程序设计》第二周学习总结
20145337 <Java程序设计>第二周学习总结 教材学习内容总结 Java可分基本类型与类类型: 基本类型分整数(short.int.long).字节(byte).浮点数(float ...
- 20145218《Java程序设计》第一周学习总结
20145218 <Java程序设计>第一周学习总结 教材学习内容总结 今天下午看了Java学习的视频,感觉很是新奇,之前觉得Java学起来是艰难枯燥的,但通过第一章的学习觉得如果自己可以 ...
随机推荐
- ZT A2DP协议笔记
A2DP协议笔记 (2013-07-30 10:07:54) 转载▼ 标签: a2dp bluetooth src sink 分类: Bluetooth 1.概述 A2DP(Advanced ...
- Ubuntu 14.04 下安装Skype
操作1: Ubuntu 14.04 下安装Skype,使用 Ctr+Alt+T组合键打开终端Terminal,输入如下即可: wget -O skype.deb http://download.sky ...
- CSS(层叠样式表)基础知识
CSS 指层叠样式表 (Cascading Style Sheets).样式定义怎样显示 HTML 元素.它通常存储在样式表中,把样式加入到 HTML 4.0 中,解决内容与表现分离的问题. 当同一 ...
- 【[NOI2010]航空管制】
关于拓扑排序的反建图还是一个非常套路的东西 比如说[HNOI2015]菜肴制作 我们希望使得某一个东西在拓扑序中出现的尽可能早,这个时候就可以建出一张反图来,使得这个东西在反图中的拓扑序尽量靠后,从而 ...
- MFC窗体程序中添加调试控制台
在编写复杂程序的过程中,我们经常需要将一些信息输出到文件或者屏幕上.较控制台应用程序,MFC窗体程序要显得麻烦一些! 下面有2种方法来实现为MFC窗体程序添加调试控制台,方便程序员调试程序和了解当前程 ...
- spring boot 2.x拦截器导致静态资源404终极解决办法
首先添加application文件static路径,我的是yml文件 spring: mvc: static-path-pattern: /static/**然后注册拦截器类如下方法; @Overri ...
- LoadRunner调用java函数测试oracle
LoadRunner调用java函数测试oracle 测试oracle的方法有很多,可以使用loadrunner的oracle协议直接调用oracle进行测试,也可以调用开发的java程序对oracl ...
- ACM-SG函数之S-Nim——hdu1536 hdu1944 poj2960
S-Nim Time Limit: 5000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Subm ...
- GraphQuery - Powerful html/xml query language
GraphQuery GraphQuery is a query language and execution engine tied to any backend service. It is ba ...
- Selenium报错整理
1. driver不匹配(常见于打不开浏览器,或者浏览器能打开但是获取不了网页元素,或者无法sendKey等问题) Exception in thread "main" org.o ...