教材学习内容总结

第六章 接口与实现

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. HBase2.0.5 WordCount

    待计算的wordCount文件放在HDFS上. wc.txt: hive hadoop hello hello world hbase hive 目标:进行WordCount计算,把结果输出到HBas ...

  2. js分析 天_眼_查 字体文件

    0. 参考 js分析 猫_眼_电_影 字体文件 @font-face 1. 分析 1.1 定位目标元素 1.2 查看网页源代码 1.3 requests 请求提取得到大量错误信息 对比猫_眼_电_影抓 ...

  3. Linux系统挂载Windows系统下的共享文件

    声明:本文是小编借鉴大神们的经验,仅供学习使用. 第一步:在Windows系统上选择要共享的文件夹,右击“属性”-“共享”-“高级共享”-勾选“共享此文件”-设置共享名-“权限”-“添加”-“高级”- ...

  4. 5.基于优化的攻击——CW

    CW攻击原论文地址——https://arxiv.org/pdf/1608.04644.pdf 1.CW攻击的原理 CW攻击是一种基于优化的攻击,攻击的名称是两个作者的首字母.首先还是贴出攻击算法的公 ...

  5. Android键盘显示和隐藏

    一.不自动弹出键盘: 带有EditText控件的在第一次显示的时候会自动获得focus,并弹出键盘,如果不想自动弹出键盘,有两种方法: 方法一:在mainfest文件中把对应的activity设置 a ...

  6. 141. 环形链表 [JS Undefined类型的运用]

    [解析] 1.遍历每个节点 2.遍历过的节点用新的空间来标记 JS新的空间不用在使用前声明,用法参考实现. 3.如果遇到标记过的节点则是环形 [实现] /** * Definition for sin ...

  7. 如何配置.Net Core Centos守护进程配置

    一.安装supervisor 运行命令 yum install supervisor 二.配置supervisor 1.运行命令创建文件夹 mkdir -p /etc/supervisor/conf. ...

  8. pandas 数据处理实例

    描述:行标签为日期,列标签为时间,表哥的值是 float 的数值# 一. 读取 csv 文件df=pd.read_csv("delay_3.csv",encoding = &quo ...

  9. saprfc

    PHP在使用saprfc的时候,首先需要安装 saprfc 拓展,然后在引入saprfc.php类库,最后在使用.   一.PHP saprfc拓展的安装(Linux):   安装方法:   安装时需 ...

  10. TestNG 中DataProvider 的用法

    使用DataProvider提供数据有两种形式: 第一种:一种是在测试代码和测试数据放在同一个类中: 第二种:把所有的数据提供都单独写在一个类里面,当测试数据比较多时,这种方法利于维护. DataPr ...