教材学习内容总结

第六章 接口与实现

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. python---循环双向链表实现

    这个方案里的尾插入,就使用了更高效的prev指标. 但感觉remove的代码不够和前面统一, 我有代码洁癖了???? # coding = utf-8 # 双向链表 class Node: # 双向链 ...

  2. Javascript我学之四作用域

    本文是金旭亮老师网易云课堂的课程笔记,记录下来,以供备忘 作用域 JavaScript的变量作用域只有两种,全局作用域和函数作用域. 函数的作用域 函数中定义的变量是私有的,仅在本函数范围内有效,称为 ...

  3. RN页面获取组件位置和大小的方法

    在RN的页面布局和操作中,有时需要获取元素的大小和位置信息,本文从网上抄袭了几个常用方法,以备不时之需. 首先是获取设备屏幕的宽高 import {Dimensions} from 'react-na ...

  4. xmind-HTTP协议

  5. Innodb与Myisam引擎的区别与应用场景

    1. 区别: (1)事务处理: MyISAM是非事务安全型的,而InnoDB是事务安全型的(支持事务处理等高级处理): (2)锁机制不同: MyISAM是表级锁,而InnoDB是行级锁: (3)sel ...

  6. (一)shell脚本入门

    shell脚本入门 1.脚本格式 脚本以#!/bin/bash 开头(指定解析器) 2.第一个shell脚本:helloworld (1)需求:创建一个shell脚本,输出helloworld 运行: ...

  7. (三)ajax请求不同源之jsonp跨域

    凡是拥有"src"这个属性的标签都具有跨域的能力,比如<script>.<img>.<iframe>. JS中,我们直接用XMLHttpRequ ...

  8. C++ 配置文件类的封装

    有时开发项目,需要对数据库等配置放到程序对外面作为配置文件,配置文件对读取 ConfigManager.h /* * ConfigManager.h * * Created on: 2018年7月28 ...

  9. Elasticsearch学习笔记二

    PS:上一篇已经介绍了ES的一些基础概念以及单机版ES的安装,配置,本文主要介绍ES的集群管理,CRUD以及简单聚合查询. 集群管理 ES的集群部署起来也很方便,将单机版SCP复制几分,修改elast ...

  10. Docker操作笔记(四)使用网络

    使用网络 Docker允许通过外部访问容器或容器互联的方式来提供网络服务. 一.外部访问容器 容器中可以运行一些网络应用,要让外部也可以访问这些应用,可以通过 -P 或 -p 参数来指定端口映射. 当 ...