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版)》学习指导

•...

最新文章

  1. 【所见即所得】textarea 精确限制字数、行数,中、英、全半角混检 。源码带注释
  2. Qt中2D绘图问题总结(一)----------基本的绘制与填充
  3. Linux系统性能分析
  4. cxf+spring+数字签名开发webservice(二)
  5. 修改list中附件排序(sharepoint 2010)
  6. 1. what is Lua?
  7. 捕获异常 winform
  8. 手机web开发
  9. UIKit继承结构和UIView.h文件详解
  10. Android SystemProperties设置/取得系统属性的用法总结
  11. Vue入门总结
  12. UVALive - 3027 Corporative Network (并查集)
  13. java国际化---native2ascii.exe 的使用方法
  14. Yii2总结
  15. 使用 ssh -R 建立反向/远程TCP端口转发代理
  16. CodeForces - 1015D
  17. poj3301--Texas Trip(最小正方形覆盖)
  18. windows下安装google protocbuf
  19. HBase的rowkey排序和scan输出顺序
  20. 【AC自动机】HDU中模板题

热门文章

  1. 【LGP5108】仰望半月的夜空
  2. 【[APIO2007]动物园】
  3. Python - if-else 的多种简洁写法
  4. xss实现钓鱼操作
  5. Python 模块化 from .. import 语句资源搜索顺序 (三)
  6. 一分钟掌握Spring中bean的生命周期!
  7. linux 下 chkconfig安装与使用详解
  8. javaSE、javaEE、javaME
  9. Java java httpclient4.5 进行http,https通过SSL安全验证跳过,封装接口请求 get,post(formdata,json)封装,文件上传下载
  10. 错误:maximum number of expressions in a list is 1000