教材学习内容总结

第六章 接口与实现

6.1 接口

  • 接口体中包含常量的声明(没有变量)和抽象方法两部分
  • 接口体中只有抽象方法没有普通的方法
  • 接口体中所有常量的访问权限一定都是public,而且是static常量,所有的抽象方法的访问权限一定都是public

6.2 实现接口

  • 一个类需要在类声明中使用关键字implements声明该类实现一个或多个接口。如果实现多个接口,用逗号隔开接口名
  • 如果一个费抽象类实现了某个接口,那么这个类必须重写这个接口中的所有方法。
  • 由于接口中的方法一定是public abstract方法,所以类在重写接口方法的时候一定要明显地用public修饰
  • 抽象类既可以重写接口中的方法,也可以直接拥有接口中的方法
  • 接口也可以使用extends继承

6.3 接口的UML类图

  • 如果一个类实现了接口,那么是实现关系。通过虚线连接类和它所实现的接口,虚线的起始端是类,虚线的终点端是它实现的接口,终点端使用一个空心的三角形表示虚线的结束

6.4 接口回调

  • 接口回调是指:可以把实现某一接口的类创建的对象的引用赋值给该接口声明的接口变量,那么该接口变量就可以调用被类实现的方法。实际上,当接口变量调用被类实现的接口方法时,就是通知相应的对象调用这个方法。
  • 接口回调很类似上转型对象调用子类重写的方法

6.5 理解接口

  • 接口可以抽象出重要的行为标准,该行为标准用抽象方法来表示
  • 可以把实现接口的类的对象的引用赋值给接口变量,该接口变量可以调用被该类实现的接口方法,即体现该类根据该类的对象的行为标准给出具体的行为。

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

6.7 接口参数

  • 如果一个方法的参数是接口类型,我们就可以将任何实现该接口的类的实例的引用传递给该接口的参数,那么接口参数就可以回调类实现的接口方法。

6.8 abstract类与接口的比较

  • abstract类和接口都可以有abstract方法
  • 接口中只可以有常量,不能有变量;而abstract类中既可以有常量也可以有变量。
  • abstract类中也可以有非abstract方法,接口不可以

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

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

  • 问题1:接口的作用我感觉和抽象类没有什么区别,甚至觉得接口有点多余,似乎抽象类都可以解决用接口解决的问题,所以接口存在的意义是什么呢?
  • 问题1解决方案:我觉得这篇博客写的很好抽象类和接口的区别,使用场景

难道接口的存在是为了实现多重继承?当然不是。我认为,抽象类和接口的区别在于使用动机。使用抽象类是为了代码的复用,而使用接口的动机是为了实现多态性。所以,如果你在为某个地方该使用接口还是抽象类而犹豫不决时,那么可以想想你的动机是什么。

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

代码托管

上周考试错题总结

  • 错题1:

    对于下列代码,下列哪个叙述是正确的?
class A { 

   public int i=0; 

   A(int m) { 

     i = 1; 

   } 

} 

public class B extends A {

    B(int m) { 

       i = 2; 

    } 

    public static void main(String args[]){ 

       B b = new B(100); 

       System.out.println(b.i); //【代码】

    } 

}

A .程序提示编译错误(原因是A类没有不带参数的构造方法)

B .编译无错误,【代码】输出结果是0。

C .编译无错误,【代码】输出结果是1。

D .编译无错误,【代码】输出结果是2。

正确答案: A 你的答案: D

错误原因:当用子类的构造方法创建一个子类的对象时,子类的构造方法总是先调用父类的某个构造方法。如果子类的构造方法没有明显地指明使用父类的哪个构造方法,子类就调用父类的不带参数的构造方法。

当父类中定义多个构造方法时,应当包括一个不带参数的构造方法,以防子类省略super时出现错误

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 30篇 400小时
第一周 32/32 3/3 20/20 掌握JDB用法
第二周 261/293 3/6 18/38
第三周 770/1063 2/8 10/48
第四周 555/1508 2/10 14/62 子类与继承
第五周 339/1847 4/14 10/72 接口

尝试一下记录「计划学习时间」和「实际学习时间」,到期末看看能不能改进自己的计划能力。这个工作学习中很重要,也很有用。

耗时估计的公式

:Y=X+X/N ,Y=X-X/N,训练次数多了,X、Y就接近了。

参考:软件工程软件的估计为什么这么难软件工程 估计方法

(有空多看看现代软件工程 课件

软件工程师能力自我评价表
)

参考资料

20175211 2018-2019-2 《Java程序设计》第五周学习总结的更多相关文章

  1. 201521123025<java程序设计>第五周学习总结

    1. 本周学习总结 2. 书面作业 1.代码阅读:Child压缩包内源代码 1.1 com.parent包中Child.java文件能否编译通过?哪句会出现错误?试改正该错误.并分析输出结果. 1.2 ...

  2. Java程序设计第五周学习总结

    1. 本周学习总结 1.1 尝试使用思维导图总结有关多态与接口的知识点. 1.2 可选:使用常规方法总结其他上课内容. 2. 书面作业 **代码阅读:Child压缩包内源代码 Child.java源代 ...

  3. 20175211 2018-2019-2 《Java程序设计》第二周学习总结

    目录 教材学习内容总结 第二章 第三章 教材学习中的问题和解决过程 代码调试中的问题和解决过程 代码托管 上周考试错题总结 其他(感悟.思考等,可选) 学习进度条 参考资料 教材学习内容总结 第二章 ...

  4. 学号 20175212 《Java程序设计》第九周学习总结

    学号 20175212 <Java程序设计>第九周学习总结 教材学习内容总结 一.MySQL数据库管理系统 1.在官网上下载并安装MySQL 2.在IDEA中输入测试代码Connectio ...

  5. 20145213《Java程序设计》第九周学习总结

    20145213<Java程序设计>第九周学习总结 教材学习总结 "五一"假期过得太快,就像龙卷风.没有一点点防备,就与Java博客撞个满怀.在这个普天同庆的节日里,根 ...

  6. 21045308刘昊阳 《Java程序设计》第九周学习总结

    21045308刘昊阳 <Java程序设计>第九周学习总结 教材学习内容总结 第16章 整合数据库 16.1 JDBC入门 16.1.1 JDBC简介 数据库本身是个独立运行的应用程序 撰 ...

  7. 20145236 《Java程序设计》第九周学习总结

    20145236 <Java程序设计>第九周学习总结 教材学习内容总结 第十六章 整合数据库 JDBC简介 1.JDBC是java联机数据库的标准规范.它定义了一组标准类与接口,标准API ...

  8. 20155304田宜楠2006-2007-2 《Java程序设计》第一周学习总结

    20155304田宜楠2006-2007-2 <Java程序设计>第一周学习总结 教材学习内容总结 - 浏览教材,根据自己的理解每章提出一个问题 第一章 除了书上提到的开发工具还有什么适合 ...

  9. 20155303 2016-2017-2 《Java程序设计》第二周学习总结

    20155303 2016-2017-2 <Java程序设计>第二周学习总结 教材学习内容总结 『注意』 "//"为单行批注符: "/*"与&quo ...

  10. 20145237 《Java程序设计》第九周学习总结

    20145237 <Java程序设计>第九周学习总结 教材学习内容总结 第十六章 整合数据库 JDBC入门 ·数据库本身是个独立运行的应用程序 ·撰写应用程序是利用通信协议对数据库进行指令 ...

随机推荐

  1. php隐藏手机号指定位数

    function mobileReplace($mobile,$start,$end,$str="*"){ $countStr = abs($end-$start); $repla ...

  2. numpy的索引-【老鱼学numpy】

    简单的索引值 import numpy as np a = np.arange(3, 15).reshape(3, 4) print("a=") print(a) print(&q ...

  3. Tornado之异步authenticated

    authenticated是tornado自带的登录验证装饰器,它的实现比较简单,验证比较简易,无法做到真正意义的前后端分离并且是同步的方式,所以这里我对它进行了重写,以适应异步JWT方式的登录验证. ...

  4. angularJs实现数据双向绑定的原理

    angular1.x在指定的事件触发时(比如dom事件,xhr响应事件,浏览器定位变更事件,定时器事件),通过脏值检测的方式比对数据是否有变更,来决定是否更新视图. angular2使用了zone.j ...

  5. linux中python3安装和使用

    python安装 下载python安装包和依赖环境 #自由选择python3源码包的版本https://www.python.org/ftp/python/https://www.python.org ...

  6. typedef 摘自百度百科

    1.typedef的最简单使用 1 typedef long byte_4; 给已知数据类型long起个新名字,叫byte_4. 2. typedef与结构结合使用 1 2 3 4 5 6 7 8 9 ...

  7. TypeScript -访问修饰符

    class test extends egret.DisplayObjectContainer { public constructor() { /** * 1.不添加构造函数constructor ...

  8. js 执行顺序

    同步任务 异步任务 同步任务:立即执行 异步任务:进入到异步队列当中(Event Queue)eg:Ajax,SetTimeout,then,SetInterval Event loop 事件循环 T ...

  9. 查找已连接过的wifi密码

    无意之间看到能破解已连接过的wifi密码的诀窍,赶紧存储下来. 1. 首先打开终端 2. 在没有网路的情况下输入: netsh wlan show profiles 结果如下(自己的): 这些‘用户配 ...

  10. GMA Round 1 波动函数

    传送门 波动函数 f(x)是一个定义在R上的偶函数,f(x)=f(2-x),当$x\in[-1,1]$时,f(x)=cos(x),则函数$g(x)=f(x)-|cos(\pi x)|$,求g(x)在[ ...