20155330 2016-2017-2 《Java程序设计》第四周学习总结
20155330 2016-2017-2 《Java程序设计》第四周学习总结
教材学习内容总结
学习目标
- 理解封装、继承、多态的关系
- 理解抽象类与接口的区别
- 掌握S.O.L.I.D原则
- 了解模式和设计模式
- 能正确覆盖方法
- 了解垃圾回收机制
- 掌握Object类
- 掌握enum
第六章 章节主要内容
小结
继承是指避免多个类间重复定义共同行为。
继承的好处1:再更改名称时,只需修改父类名称,继承父类的子类均无需修改。(需注意的是private成员同样会被继承,但子类无法直接存取,必须通过父类提供的方法来存取(在父类愿意提供访问方法的前提下。))
Java中,子类只能继承一个父类,继承除了避免类间重复的行为定义,子类和父类间还会有is-a的关系。A(子类) 继承了B(父类),则表示为A(子类) is a B(父类)
多态是指使用单一接口操作多种类型的对象。Java以继承及界面来实现多态。
abstract可标示方法为抽象方法,该方法不用撰写{}区块,直接使用
;
结束即可。权限关键字与范围
关键字 类内部 相同包类 不同包类 public 可存取 可存取 可存取 protected 可存取 可存取 子类可存取 无 可存取 可存取 不可存取 private 可存取 不可存取 不可存取 重新定义方法对于父类中的方法权限只能扩大不能缩小。
instanceOf运算符用来判断对象是否由某个类创建,左操作数是对象,右操作数是类。
第七章 章节主要内容
小结
- 接口可以用于定义行为但不定义操作。
- 类要操作接口,必须使用
impements
关键字。 - 操作某接口时有两种处理方式:
- 操作接口中定义的方法
- 再度将该方法标示为
abstract
- 类与接口之间是实现关系,而且类可以继承一个类的同时实现多个接口,接口与接口之间可以有继承关系。
- 可使用
interface
来定义抽象的行为与外观,接口中的方法没有操作时,一定得是公开且抽象,此时可以省略public abstract
。 enum
语法可用于定义枚举常数。enum
定义了特殊的类,直接撰写程序继承Enum
类会被编译程序拒绝。- 在接口中枚举常数一定要使用
=
指定值。 在类中定义枚举常数一定要明确写出public static final
。
教材学习中的问题和解决过程
问题1:
abstract
抽象类、抽象方法如何使用?解决方案:
abstract修饰类,会使这个类成为一个抽象类,这个类将不能生成对象实例,但可以做为对象变量声明的类型,也就是编译时类型,抽象类就像当于一类的半成品,需要子类继承并覆盖其中的抽象方法。
abstract修饰方法,会使这个方法变成抽象方法,也就是只有声明(定义)而没有实现,实现部分以";"代替。需要子类继承实现(覆盖)。
注意:有抽象方法的类一定是抽象类。但是抽象类中不一定都是抽象方法,也可以全是具体方法。
abstract修饰符在修饰类时必须放在类名前。
abstract修饰方法就是要求其子类覆盖(实现)这个方法。调用时可以以多态方式调用子类覆盖(实现)后的方法,也就是说抽象方法必须在其子类中实现,除非子类本身也是抽象类。
注意:父类是抽象类,其中有抽象方法,那么子类继承父类,并把父类中的所有抽象方法都实现(覆盖)了,子类才有创建对象的实例的能力,否则子类也必须是抽象类。抽象类中可以有构造方法,是子类在构造子类对象时需要调用的父类(抽象类)的构造方法。
问题2:JVM的垃圾收集机制中什么时候会触发一个对象的回收?
解决方案:根据搜索得知:
- 对象没有引用
- 作用域发生未捕获异常
- 程序在作用域正常执行完毕
- 程序执行了System.exit()
- 程序发生意外终止(被杀进程等)
代码调试中的问题和解决过程
- 问题1:
- 解决方案:因为同一个java源文件中最多只能有一个声明为public的类,而书上的代码块均分别为独立的java源文件,所以在组合时忽略了这个问题。将除了RPG3模块的其他模块中声明为public的部分删除。
- 问题2:
- 解决方案:经过检查发现是由于主类中没有将Magician名称修所导致的问题。
- 问题3:
public class RPG4 {
public static void main(String[] args) {
SwordsMan4 swordsMan = new SwordsMan4();
swordsMan.setName("Justin");
swordsMan.setLevel(1);
swordsMan.setBlood(200);
Magician4 magician = new Magician4();
magician.setName("Monica");
magician.setLevel(1);
magician.setBlood(100);
drawFight(swordsMan);
drawFight(magician);
}
static void drawFight(Role4 role) {
System.out.print(role.getName());
role.fight();
}
}
内部类为何无法使用static?(提示为:inner classes cannot have static declarations/内部类不能具有静态声明)
- 解决方案:因为内部类特殊,他被定向为是和成员变量,方法一样的外部类成员。内部类必须跟外部类实例相关联才能初始化,这是其特点之一,而静态成员是不需要实例就初始化的。如果一个非静态内部类有了静态成员,静态成员不依托于任何内部类实例,那结果也就是此内部类不需要外部类实例就初始化了变量,严重侵害了内部类的定向。
代码托管
代码提交过程截图:
代码量截图:
上周考试错题总结
- 错题1:17. CH04 判断:Clothes [] c1; …; Clothes [] c2=Arrays.copyOf(c1,c1.length)是浅拷贝。(OK)
- 理解情况:被复制对象的所有变量都含有与原来的对象相同的值,而所有的对其他对象的引用仍然指向原来的对象。浅层复制仅仅复制所考虑的对象,而不复制它所引用的对象。
- 错题2:29. CH05 填空:Java中成员方法中引用成员变量,要使用(this)关键字。
- 理解情况:在Java中,this()代表了调用另一个构造函数,所以在成员方法中引用成员变量时,需要使用到this关键字。
- 错题3:32. CH05 判断:Java中方法内可以定义类。(OK)
- 理解情况:方法中不能直接定义方法,但可以在方法中定义类,类里面再定义方法。
其他(感悟、思考等,可选)
现在应该算Java刚入门没多久,在学习过程中产生的问题多是在输入代码时出现的语法错误,这点需要加以注意和改正。
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 18篇 | 300小时 | |
第一周 | 15/15 | 1/1 | 15/15 | |
第二周 | 159/174 | 1/2 | 20/35 | |
第三周 | 414/588 | 1/3 | 18/53 | 了解了封装、对象 |
第四周 | 461/1049 | 1/4 | 18/71 |
计划学习时间:16小时
实际学习时间:18小时
改进情况:由于已经开学快一个月了,除了日常学习,学生工作也变得繁忙了起来。同时兼顾二者是需要一定的精力的,所以根据实际情况适当修改了学习时长。但相对之后的课程来说,这一周还算能够有充裕的时间来学习。
参考资料
20155330 2016-2017-2 《Java程序设计》第四周学习总结的更多相关文章
- Java程序设计第四周学习总结
1. 本周学习总结 1.1 尝试使用思维导图总结有关继承的知识点. 1.2 使用常规方法总结其他上课内容. 答:①String类是final类,不能定义String的子类. ② instanceof ...
- 对于“2017面向对象程序设计(JAVA)第四周学习总结”存在问题的反馈
对于“2017面向对象程序设计(JAVA)第四周学习总结”存在问题的反馈 “这部分同学博文总结没有写,实验作业没有提交.”——1.关于博文作业.实验作业教学功能的正解:学习知识.暴露问题.衔接课上.2 ...
- 杨其菊201771010134《面向对象程序设计(java)》第四周学习总结
<面向对象程序设计(java)> 第四周学习总结 第一部分:理论知识 1.类与对象 a.类(class)是构造对象的模板或蓝图.由类构造对象的过程称为创建类的实例: java中类声明的格式 ...
- 201871010106-丁宣元 《面向对象程序设计(java)》第四周学习总结
201871010106-丁宣元 <面向对象程序设计(java)>第四周学习总结 正文开头 项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-da ...
- 20155318 2016-2017-2 《Java程序设计》第九学习总结
20155318 2016-2017-2 <Java程序设计>第九学习总结 教材学习内容总结 学习目标 了解JDBC架构 掌握JDBC架构 掌握反射与ClassLoader 了解自定义泛型 ...
- 《Java程序设计》第二学习总结
<Java程序设计>第二学习总结 教材学习内容总结 类型 byte(字节) shot(短整型) int(整型) long(长整型) float(浮点型) double(双精度) char( ...
- 20145304 刘钦令 Java程序设计第二周学习总结
20145304 <Java程序设计>第2周学习总结 教材学习内容总结 java可区分基本类型和类类型(即参考类型)两大类型系统. 基本类型主要可区分为整数.字节.浮点数.字符与布尔. 整 ...
- 20145304 刘钦令 Java程序设计第一周学习总结
20145304<Java程序设计>第1周学习总结 教材学习内容总结 1995年5月23日,是公认的Java的诞生日,Java正式由Oak改名为Java. Java的三大平台是:Java ...
- 20145120黄玄曦 《java程序设计》 寒假学习总结
1和2.我对未来规划不多,我认为好好学习积累知识能帮助我应对未来的挑战,这是我的学习动力之一,此外,了解新知识满足好奇心也是我的主要的学习动力. 3.我认为专业课学习比公务员考试重要,我认为专业知识是 ...
- 201621123007 Java程序设计第一周 学习总结
第一周-Java基本概念 201621123007 <Java程序设计> 第一周学习总结 1. 本周学习总结 java是面向对象的一类语言,三大特征:封装性,继承性,多态性. jdk jr ...
随机推荐
- C语言程序员必读的5本书
本文由 伯乐在线 - programmer_lin 翻译自 fromdev.欢迎加入技术翻译小组.转载请参见文章末尾处的要求. 你正计划着通过看书来学习C语言吗?“书籍是人类最忠诚的朋友“.海明威一定 ...
- IOS 对JSON解析的要求
JOSN格式的原始字符串中, 键名必须为 引号 “” 包含的字符串,值必须是数组("[]" 用中括号包起来的部分),字典("{}" 用中括号包起来的部分),数字 ...
- centos 7.0 查看selinux状态|关闭|开启
Linux在安装好之后通常SELinux都是出于默认开启的状态,开启的情况下会导致一些服务的安装不成功. 在不需要的情况下完全可以关闭掉,下面是在centos 7.0里面如何查看,关闭selinux. ...
- 基于cookie和session的登录验证
settings.py MIDDLEWARE = [ 'django.middleware.security.SecurityMiddleware', 'django.contrib.sessions ...
- 【node】安装
参考链接: http://www.runoob.com/nodejs/nodejs-install-setup.html http://blog.csdn.net/u010255310/article ...
- 使用appassembler插件生成启动脚本
appassemblermaven插件可以自动生成跨平台的启动脚本,省去了手工写脚本的麻烦,而且还可以生成jsw的后台运行程序.插件官网:http://www.mojohaus.org/appasse ...
- Maven Jetty插件使用
本机环境 JDK8 Maven 3.5 Jetty 9.3 Eclipse Mars pom.xml配置 在你的 pom.xml 文件中添加 jetty 插件的描述信息 <build> & ...
- RabbitMQ镜像模式双节点部署时故障转移过程中队列中消息的状态
场景 现有节点Node1和Node2,建立Exchange:yu.exchange,创建队列yu1.queue镜像队列master位于Node1,yu2.queue镜像队列位于Node2,使用topi ...
- Oracle 存储结构二
创建和管理表空间 创建表空间 典型语句: CREATE SMALLFILE TABLESPACE "JWTS" DATAFILE '/u01/app/oracle/oradata/ ...
- 通达信k线颜色设置
通达信的k线函数没有颜色选项.如果想要画颜色可以使用STICKLINE函数来覆盖当前k线这样也是可以满足需求. 第一步画针 STICKLINE(条件 , L , H , 0 , 0 ) , 颜色; 第 ...