20165223 《JAVA程序设计》第四周学习总结

20165223 《JAVA程序设计》第四周学习总结

教材学习内容总结

第五章要点
  • 子类与继承
  • 成员变量的隐藏和方法重写
  • super关键字
  • 继承与多态
  • abstract类与abstract方法
第六章要点
  • 接口与实现
  • 接口回调
  • 接口与多态
  • 面向接口编程

教材学习中的问题和解决过程

一、重要知识点

  • 子类(subclass)
    • 定义:由继承得到的类
    • 关键字extends
    class 子类名 extends 父类名 {
       ...
    }
    • 继承性:从父类处继承而来
  • 父类(superclass)
    • 定义:被继承的类,超类
  • Object是所有类的祖先
  • 除Object类外,所有类只能有一个父类,但能有多个或没有子类
  • 如无extends声明,这个类被默认为Object的子类
  • 子类从父类处继承来的方法可以操作未继承的变量
  • is-a:子类与父类具有完全相同的接口,即子类与父类是完全相同的类型
  • is-like-a:子类中添加了新的接口元素,即扩展了接口,父类无法访问新添加的方法。此时导出类is like a 基类
  • super关键字:操作被隐藏的成员变量和方法、调用父类的构造方法
  • final关键字:修饰类、成员变量、方法中的局部变量
  • 类的UML图画法
    • 属性的表示::={缺省值,可选}
    • 方法的表示:():
    • 可见性:"-"表示private、"+"表示public、"#"表示protected
      1047360-20180325195345235-1104482792.png
  • 继承关系UML画法
    • 继承也叫作泛化(Generalization),用于描述父子类之间的关系,父类又称为基类或者超类,子类又称作派生类。在UML中,泛化关系用带空心三角形的实线来表示
      1047360-20180325195355855-875395847.png
  • 抽象继承关系UML画法
    • 在UML中,抽象类无论类名还是抽象方法名,都以斜体的方式表示,因为这也是一种继承关系,所以子类与父类通过带空心三角形的实线来联系
    • 子类中覆盖了父类的abstract方法,方法名再次出现
      1047360-20180325195401184-1264321190.png
  • 实现关系UML画法
    • 在接口中通常没有属性,而且所有的操作都是抽象的,只有操作的声明没有操作的实现
    • UML中用与类类似的方法表示接口。即在方法上有<<interface>>表示这是一个接口
    • 接口一般没有属性,所以没有中间层,有属性也都是常量
      1047360-20180325195405968-670100111.png

二、疑难问题

  • 子类为什么要重写,重写的意义是什么?

    实际应用中,用得最多的一种运行时多态,就是用只知道父类型(可能是类,更多的可能是接口)的定义,这样只能调用父类型的方法(这在大型软件里很常用,父类型和子类型可能是不同的人编写的,以利于协作编程)。
    因此,如果子类型重写了父类型的同名方法,那么只知道父类型的定义就可以调用子类型的方法了,这体现了软件复用。

——来自百度知道

因此通过子类的重写,可以隐藏已继承的方法(方法覆盖),便于之后调用子类型的方法,体现了类的复用,要明白多态的含义

  • super关键字和this关键字的差别?

    • this代表的是当前对象,调用当前类的方法或变量;
    • super调用的是父类的方法或变量,在子类中通过super关键字来调用,可操作被隐藏的成员变量和方法、构造方法
  • 继承和多态的区别?
    • 继承:就是子类继承父类,使子类具有父类的各种属性和方法,好处就是避免多余的代码出现
    • 多态:就是一个接口,使用不同的实例去执行不同的操作,好处就是增强程序的可扩展性及可维护性搜索,使代码更简洁
  • 面向接口编程和面向抽象编程的差别?
    • 面向接口编程,是指面向超类型编程,比如抽象类和接口,或super class,这样的话,可以按照约定进行获取数据,不用关心内部处理的细节,封装了业务逻辑,维护了系统的稳定性和系统间的低耦合性
    • 面向抽象编程,是指面向抽象角色编程,而不面向具体类编程。好处是程序可以灵活地增加功能,良好的解耦性、可扩展性,符合“开-闭”准则

区别:抽象类和接口都是超类型,抽象类是对事物的抽象,接口是对行为的抽象。这样,在需要使用事物抽象时使用抽象类,在需要使用行为抽象时使用接口

  • 几个概念的总结和关系
    1047360-20180325204239892-1289956582.gif

代码调试中的问题和解决过程

  • 编译时遇到如图错误,但代码并没有出错

1047360-20180325191832084-1286201195.png

1047360-20180325191838715-171607486.png

后来发现其实这只是一个提示,提示所用的类中有已过时的类,实际上还是可以正确执行

出现这个提示的本质原因是:在你的源代码中,使用JDK中的类的时候,调用了已经过时的方法。所谓过时方法,是有些没有真正实现的方法,或存在潜在问题的方法。这些方法一般情况下,目前的JDK还支持,但在未来的某个版本中,可能就会取消的。所以,在本地使用的代码不必担心这个问题;要移值到其它计算机的程序必须要解决这个问题。这些过时的方法在JDK的更高版本中,绝对大多数提供了替换方法,少部分是要放弃了。想改好程序,就要找到能够替代的方法,来修改代码。能替代的方法查阅API文档就能看到,在方法目录中,过时的方法有“已过时”的说明,在方法明细里能看到被哪个方法代替了。

——来自百度知道

代码托管

详见码云代码链接:https://gitee.com/BESTI-IS-JAVA-2018/20165223cn/tree/master/src/

1047360-20180325213521759-2012766784.jpg

上周考试错题总结

详见博客:
week3蓝墨云测试总结
week4测试补交与总结

感悟与总结

已经是第四周的学习了,这一周更深入地学习了类的知识,在敲代码的过程中也越来越清晰的明白了各种概念的含义。现在体现出来的一个重要的问题就是,在通过教材学习的时候敲代码可以慢慢理解代码含义,但在自己编写程序的时候,却经常搞不清楚该如何使用各种类,如何调用,以及各种关键字的含义,这都说明了我还是不够熟练掌握这些知识,希望在之后的努力下会做得好些。

学习进度条

代码行数(新增/累积)博客量(新增/累积)学习时间(新增/累积)重要成长
目标3000行30篇400小时
第一周178/2001/220/20基础
第二周368/2002/420/20基础
第三周865/2003/720/20逐渐深入
第四周920/2002/920/20逐渐深入

参考资料

  1. 第五第六章教学视频
  2. Intellj IDEA 简易教程
  3. 使用JDB调试Java程序

转载于:https://www.cnblogs.com/moddy13162201/p/8645641.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值