20155337 2016-2017-2 《Java程序设计》第三周学习总结
20155337 2016-2017-2 《Java程序设计》第死周学习总结
教材学习内容总结
第六章
•何谓继承:
面向对象中,为避免多个类间重复定义共同行为。(简单说就是将相同的程序代码提升为父类。)
•特点:•这里接触到了新的关键词,extends,在java语言中用estends来继承父类的行为。
•is-a原则,在java中子类只能继承一个父类。要开始理解多态,必须先知道操作的对象是“哪一种”。
•多态,使用单一接口操作多种类型的对象。
•在继承父类之后,定义与父类中相同的方法部署,但执行内容不同,称为重新定义。
•如果某方法区块真的没有任何程序代码操作,可以直接使用abstract标识该方法为抽象方法,该方法不用撰写{}区块,直接“;”结束即可。
•注意:•关键字extends是为了扩充和继承父类的行为。
•在java中一个子类只能继承一个父类。
•在判断操作对象是“哪一种”的时候,检查语法的逻辑是否正确,方式是从=右边往左边读:右边是不是一种左边呢(右边类是不是左边类的子类)?
•在重新定义中,子类必须撰写与父类方法相同的签署,如果因为疏忽打错字就会完全不同(虽然编译会成功,但是行为会完全不同),但在JDK5后标注@Override,表示要求编译程序检查是否真的重新定义父类中某个方法。
•子类如果继承抽象类,对于抽象方法有两种做法,一种是继续标注该方法为abstract(必须在class前标注abstract),另一种就是操作抽象方法,如果都没有实施,则会出现编译错误。
•注意:
•JAVA中有3个权限关键字,public、protected与private,但实际上有4个权限范围。
•若原来成员public,子类中重新定义时不可谓private或protected。
•在JDk5之前,重新定义方法时除了可以定义权限较大的关键字之外,其他部分必须与父类中方法签署完全一致。
•在没有编纂任何构造函数时候,会自动加入没有参数的默认构造函数,但如果定义了构造函数,就不会加入任何构造函数。
•在创建ArrayList实例时候,可以指定内部数组初始容量,如果使用无参数构造函数,则默认容量为16。
•关于垃圾收集
在执行流程中,无法通过变量参考的对象,就是GC(Garbage Collection) 认定的垃圾对象。
•关于抽象类
虽然是抽象方法,但在go()方法中,还是可以调用。
第七章
•何谓接口
•概念:
接口相当于另一种“继承”,可任意操作接口内的行为。
•特点:
•接触到了新的关键词interface。这里是针对“定义行为”,在java中可以使用interface关键字进行定义。类要操作接口必须使用implements关键字
•接口可用于定义行为但不定义操作。
•行为的多态,判断代码中如同is-a原则相同,“右边是不是拥有左边的行为”或者“右边对象是不是操作了左边的接口”
•对于解决需求的变化,首先需要编写有弹性、维护性的程序,即增加新的需求,在原有的程序无需修改,只需针对新需求撰写程序。
•在java中,类可以操作两个以上的类,也就是拥有两种以上的行为。
•在编写一个好的程序代码的时候需要好的一个架构,各个架构之间可用操作接口来连接,也可以用子类继承父类来连接。
•注意:
•接口的操作与类的继承不同,在java中只能继承一个父类,但是类可以同时继承某个类,同样的可以同时操作某些接口。
•关键字interface是用来定义操作的,关键字implements是用来类操作关键字的。
•操作某接口时,有两种方法对接口进行定义,一种是操作接口中定义方法,另一种是再度将该方法标注abstract。
•在判断行为的多态的时候,与判断is-a原则相同,从=的右边往左边读进行判断。
•在java中,接口可以继承自另一个接口,也就是继承父接口行为。
教材学习中的问题和解决过程
•在对于理解继承的存在一点问题,当利用关键字extends继承的时候,最开始编译的父类和之后即将继承的子类之间的关系的问题,是否需要将两个代码放到一起?如果放到一起,是否需要将其中的一个public公开类修改一下?在下课询问娄老师后知道了父类和即将继承的子类之间的关系,即不需要将两段代码放到同一个.java文件夹下,放到同一个package下就可以继承了。
•不能很好的使用“is-a”原则判断何时可以编译成功何时可以编译失败,但是借助了书上的剑士与魔法师游戏的例子有所了解。比如: Role role1= new SwordsMan();Role role2 = new Magician();可以很好的有助于理解“哪一种”原则。
•对于3个权限关键字,但是有4个权限范围的知识点,当看了书上的列举的表格和书上给的参照实例,也有所了解。
•再构造函数部分,只知道在子类构造函数中没有指定执行某个父类中的构造函数,会默认调用无参构造函数,但是看书后得知先执行子类中的函数,如果想执行父类中某构造函数,可以用super()指定。
代码调试中的问题和解决过程
package cc.openhomesix;
public class SwordsMan extends Role {
public void fight(){
System.out.println("挥剑攻击");
}
}
首先因为最开始不太懂子类和父类继承之间的关系,不太懂是否需要将其放到同一个java文件夹中,后来发现不需要,放到同一个package下就可以,然后再编译SwordsMan的代码的时候发现有错误,仔细检查后发现是在于继承的Role存在问题,导致这个也发生了编译错误。
package cc.openhomeseven;
public class Submarine implements Swimmer{
private String name;
public Submarine(String name){
this.name=name;
}
public String getName(){
return name;
}
@Override
public void swim(){
System.out.printf("潜水艇 %s 潜行 %n",name);
}
}
这个代码最开是分不清关键字implements和关键字interface,这两个关键字具体的作用有点区别,所以在操作接口的时候发生了错误,但在书搞懂了之后就代码成功了。
学习进度条
| 代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
|---|---|---|---|---|
| 目标 | 5000行 | 30篇 | 400小时 | |
| 第四周 | 120/200 | 1/2 | 10/20 |
参考资料
•Java学习笔记(第8版)
•《Java学习笔记(第8版)》学习指导
•...
20155337 2016-2017-2 《Java程序设计》第三周学习总结的更多相关文章
- Java程序设计第三周学习总结
1. 本周学习总结 2. 书面作业 Q1.代码阅读 public class Test1 { private int i = 1;//这行不能修改 private static int j = 2; ...
- 对于“2017面向对象程序设计(Java)第三周学习总结”存在问题的反馈
对于“2017面向对象程序设计(Java)第三周学习总结”存在问题的反馈 一:教学中存在的学习问题 “1.由于同学们平时练习不足,上课总是出现跟不上老师的节奏的现象. 2.个别同学上课不认真听讲,打开 ...
- # 20155337 2016-2017-2 《Java程序设计》第九周学习总结
20155337 2016-2017-2 <Java程序设计>第九周学习总结 教材学习内容总结 第16章 JDBC(Java DataBase Connectivity)即java数据库连 ...
- 20155337 2016-2017-2 《Java程序设计》第一周学习总结
20155337 2016-2017-2 <Java程序设计>第一周学习总结 教材学习内容总结 我们主要学习的是JAVA SE平台也就是标准平台-Java SE四个组成部分:JVM .JR ...
- 20145213《Java程序设计》第九周学习总结
20145213<Java程序设计>第九周学习总结 教材学习总结 "五一"假期过得太快,就像龙卷风.没有一点点防备,就与Java博客撞个满怀.在这个普天同庆的节日里,根 ...
- 20145213《Java程序设计》第二周学习总结
20145213<Java程序设计>第二周学习总结 教材学习内容总结 本周娄老师给的任务是学习教材的第三章--基础语法.其实我觉得还蛮轻松的,因为在翻开厚重的书本,一股熟悉的气息扑面而来, ...
- 21045308刘昊阳 《Java程序设计》第九周学习总结
21045308刘昊阳 <Java程序设计>第九周学习总结 教材学习内容总结 第16章 整合数据库 16.1 JDBC入门 16.1.1 JDBC简介 数据库本身是个独立运行的应用程序 撰 ...
- 20145330孙文馨 《Java程序设计》第一周学习总结
20145330孙文馨 <Java程序设计>第一周学习总结 教材学习内容总结 刚开始拿到这么厚一本书说没有压力是不可能的,开始从头看觉得很陌生进入不了状态,就稍微会有一点焦虑的感觉.于是就 ...
- 20145337 《Java程序设计》第九周学习总结
20145337 <Java程序设计>第九周学习总结 教材学习内容总结 数据库本身是个独立运行的应用程序 撰写应用程序是利用通信协议对数据库进行指令交换,以进行数据的增删查找 JDBC可以 ...
- 《Java程序设计》第九周学习总结
20145224 <Java程序设计>第九周学习总结 第十六章 整合数据库 JDBC入门 ·数据库本身是个独立运行的应用程序 ·撰写应用程序是利用通信协议对数据库进行指令交换,以进行数据的 ...
随机推荐
- jq封装-无缝滚动效果
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...
- 【[IOI2014]Wall 砖墙】
好像随便一卡就最优解了 malao告诉我这道题挺不错的,于是就去写了写 这两个操作很有灵性啊,感觉这么有特点的数大概是需要分块维护的吧 但是并没有什么区间查询,只是在最后输出整个序列 于是我们就直接用 ...
- 【BBS】BBS论坛项目各个页面的工作流程图
1论坛整体结构 2数据库结构 3登录页面 4论坛首页(显示各个板块) 5显示板块对应的内容 6文章内容页 7新增板块.发表文章.回复 8版面管理.用户管理.发帖排行
- 复习静态页面polo-360
1.ps快捷键 ctrl+1 恢复到100% ctrl+0 适应屏幕大小 ctrl+r 显示标尺 辅助线的利用 矩形框--图像--裁剪:文件存储为web所用格式,注意选格式. 1个像素的平铺 雪碧图的 ...
- 《metasploit渗透测试魔鬼训练营》学习笔记第五章--网络服务渗透攻击
三.网络服务渗透攻击 3.1 内存攻防技术 3.1.1 缓冲区溢出漏洞机理 缓冲区溢出是程序由于缺乏对缓冲区的边界条件检查而引起的一种异常行为. ...
- PHP扩展功能 ---- 页面静态化(OB缓冲)
一.入门三部曲 1.什么是页面静态化 百度百科介绍: 静态页面是网页的代码都在页面中,不需要执行asp,php,jsp,.net等程序生成客户端网页代码的网页,静态页面网址中一般不含"?&q ...
- ubuntu使用----高效快捷键
桌面快捷键 : ALT + F1: 聚焦到桌面左侧任务导航栏,可按上下键导航. ALT + F2: 运行命令 ALT + F4: 关闭窗口 ALT + TAB: 切换程序窗口 ALT + 空格: 打开 ...
- 关于RFID电动车防盗、校园答题卡(超低功耗2.4G芯片SI24R2E)
Si24R2E 是一颗工作在2.4GHz ISM 频段,专为低功耗有源RFID 应用场合设计,集成嵌入式发射基带的无线发射芯片.128 次可编程NVM 存储器以及自动发射模块.工作频率范围 ...
- CS20Chapter3
waiting P54 shuffle data 03_Lecture note_Linear and Logistic Regression 学习点1: python的地址输入是要不能用正斜杠\的 ...
- PAT——1074. 宇宙无敌加法器(20)
地球人习惯使用十进制数,并且默认一个数字的每一位都是十进制的.而在PAT星人开挂的世界里,每个数字的每一位都是不同进制的,这种神奇的数字称为“PAT数”.每个PAT星人都必须熟记各位数字的进制表,例如 ...