学号 20175206《Java程序设计》第五周学习总结

教材学习内容总结

6.1 接口
为了克服Java单继承的缺点,Java使用了接口,一个类可以实现多个接口。
使用关键字interface来定义一个接口。接口的定义和类的定义很相似,分为接口的声明和接口体。
(1)接口声明
接口通过使用关键字interface来声明
格式:interface 接口的名字
(2)接口体
接口体中包含常量定义和方法定义两部分。接口体中只进行方法的声明,不许提供方法的实现,所以,方法的定义没有方法体,且用分号“;”结尾
(3)接口的变量和方法的构成规则
接口中的变量自动都是public、static,final,
接口中的方法默认为public abstract;接口也产生class文件。
接口中的方法不能被static和final修饰,因为要重写所有接口中的方法。
接口中没有构造函数,方法可以抛出异常。

6.2 实现接口
一个类通过使用关键字implements声明自己实现一个或多个接口。
如果一个类实现了某个接口,那么这个类必须重写该接口的所有方法。
接口可以通过继承产生新的接口。
Java提供的接口都在相应的包中,通过import语句不仅可以引入包中的类,也可以引入包中的接口.

6.3 接口的UML图
表示接口的UML图和表示类的UML图类似,使用一个长方形描述一个接口的主要构成,将长方形垂直地分为三层。
顶部第1层是名字层,接口的名字必须是斜体字形,而且需要用<>修饰名字,并且该修饰和名字分列在两行。
第2层是常量层,列出接口中的常量及类型,格式是“常量名字:类型”。
第3层是方法层,也称操作层,列出接口中的方法及返回类型,格式是“方法名字(参数列表):类型”。

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

6.5 理解接口
理解的关键点是:
(1)接口可以抽象出重要的行为标准,该行为标准用抽象方法来表示。
(2)可以把实现接口的类的对象的引用赋值给接口变量,该接口变量可以调用被该类实现的接口方法,即体现该类根据接口里的行为标准给出的具体行为。
接口的思想在于它可以要求某些类有相同名称的方法,但方法的具体内容(方法体的内容)可以不同,即要求这些类实现接口,以保证这些类一定有接口中所声明的方法(即所谓的方法绑定)。接口在要求一些类有相同名称的方法的同时,并不强迫这些类具有相同的父类。

6.6 接口与多态
可以通过在接口中声明若干个abstract方法,表明这些方法的重要性,方法体的内容细节由实现接口的类去完成。使用接口进行程序设计的核心思想是使用接口回调,即接口变量存放实现该接口的类的对象的引用,从而接口变量就可以回调类实现的接口方法。

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

6.8 abstract类与接口的比较
接口和abstract类的比较如下:
(1)abstract类和接口都可以有abstract方法。
(2)接口中只可以有常量,不能有变量;而abstract类中即可以有常量也可以有变量。
(3)abstract类中也可以有非abstract方法,接口不可以。

6.9 面向接口编程
面向接口去设计程序,可以通过在接口中声明若干个abstract方法,表明这些方法的重要性,方法体的内容细节由实现接口的类去完成。
使用接口进行程序设计的核心思想是使用接口回调,即接口变量存放实现该接口的类的对象的引用,从而接口变量就可以回调类实现的接口方法。

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

  • 问题1:接口无法调用类中其他的接口方法?接口的回调如何处理
  • 问题1解决方案:

  • 问题2:如何要求程序实现的接口数
  • 问题2解决方案:

上周考试错题总结

  • 错题1
    如果有以下程序片段:

interface Some{
protected void dosome ();
}
class SomeImpl implements Some {
public void dosome(){
System.out.println("做一些事");
}
}
public class Main{
public static void main (String [] args) {
Some s= new SomeImpl();
s.dosome ();
}
}
以下描述正确的是(A)

A .编译失败

B .显示“做一些事”

C .发生ClassCastException

D .执行时不显示任何信息

原因:需要看到public类和protected的区别。

  • 错题2
    如果有以下程序片段

interface Some{
void dosome ();
}
class SomeImpl implements Some {
public void dosome(){
System.out.println("做一些事");
}
}
public class Main {
public static void main (String [] args) {
Some s= new SomeImpl();
s.dosome ();
}
}
以下描述正确的是(B)

A .编译失败

B .显示“做一些事”

C .发生ClassCastException

D .执行时不显示任何信息

原因:与第一道题进行比较得出结果。

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 3500行 8篇 100小时
第五周 350/500 2/2 15/20
第六周 0/500 0/2 0/30
第七周 0/1000 0/2 0/25
第八周 0/1500 0/2 0/25

尝试一下记录「计划学习时间」和「实际学习时间」,到期末看看能不能改进自己的计划能力。这个工作学习中很重要,也很有用。
耗时估计的公式
:Y=X+X/N ,Y=X-X/N,训练次数多了,X、Y就接近了。

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

  • 计划学习时间:20小时

  • 实际学习时间:15小时

  • 改进情况:

(有空多看看现代软件工程 课件
软件工程师能力自我评价表
)

参考资料

第五周java学习总结的更多相关文章

  1. 第五周Java学习总结(补)

    第五周java学习内容(补) 学习内容: File类方法的操作 public String getName() public boolean canRead() public boolean canW ...

  2. 20145304 第五周Java学习报告

    20145304<Java程序设计>第5周学习总结 教材学习内容总结 1.使用try.catch: 如果使用了try.catch,编译时会尝试执行try区块中的程序代码,如果有错误,执行流 ...

  3. 20165319第五周java学习笔记

    教材内容总结 1.String类和StringBuffer类都覆盖了toString方法,都是返回字符串. 所以带不带toString效果是一样的. 2.instanceOf运算符可以用来判断某个对象 ...

  4. 20165236 第六周Java学习总结

    20165236 第六周Java学习总结 一. 第八章内容: 1.String 类: String对象.常量对象:字符串并置: 常用方法: length,equals,startsWith,compa ...

  5. 20165203《Java程序设计》第七周Java学习总结

    20165203<Java程序设计>第七周Java学习总结 教材学习内容总结 第11章 JDBC与MySQL数据库 MySQL数据库管理系统 MySQL数据库管理系统,简称MySQL,是世 ...

  6. 20145307陈俊达第六周JAVA学习总结

    20145307陈俊达第六周JAVA学习总结 知识点梳理 第十章节 S1 ·若要将数据从来源中取出,可以使用输入串流:若要将数据写入目的地,可以使用输出串流.在java中,输入串流代表对象为java. ...

  7. 第十一周java学习总结

    目录 第十一周java学习总结 学习内容 学习总结 提交代码截图 代码推送 第十一周java学习总结 学习内容 第13章 Java网络编程 主要内容 URL类 InetAdress类 套接字 UDP数 ...

  8. 第十周java学习总结

    目录 第十周java学习总结 学习内容 代码上传截图 代码链接 第十周java学习总结 学习内容 第12章 Java多线程机制 主要内容 Java中的线程 Thread类与线程的创建 线程的常用方法 ...

  9. 20175215 2018-2019-2 第五周java课程学习总结

    第六章学习内容 1.接口 使用interface来定义一个接口. 接口体中包含常量的声明(没有变量)和抽象方法两部分.接口体中只有抽象方法,没有普通的方法,而且接口体中所有的常量的访问权限一定都是pu ...

随机推荐

  1. java基础(二):谈谈Java基本数据结构

    数据结构是计算机存储,组织数据的方式.数据结构是指相互之间存在一种或多种特定关系的数据元素的集合.通常情况下,精心选择的数据结构可以带来更高的运行或存储效率.数据结构往往同高效的检索算法和索引技术有关 ...

  2. maven+springMVC(一)

    [目录]

  3. linux 大冒险

    本来想搞一个nas系统,结果上来linux的贼船. 本来是看上了deepin深度linux,结果看到排名第一的manjaro 就忍不住手.通过hyper-v虚拟机安装,发现这个所谓的第一不知道第一在哪 ...

  4. Python使用Plotly绘图工具,绘制甘特图

    今天来讲一下如何使用Python 的绘图工具Plotly来绘制甘特图的方法 甘特图大家应该了解熟悉,就是通过条形来显示项目的进度.时间安排等相关情况的. 我们今天来学习一下,如何使用ployly来绘制 ...

  5. ext前后台数据传输的标准化

    一.标准化的数据传输是什么 这里所说的标准化主要是指,使用代理提交数据时,格式必须统一化.标准化,而服务器返回的数据格式也必须是标准化的数据. 简言之,使用代理提交数据时,前台--->后台,后台 ...

  6. 城市经纬度 json

    [ { "name": "北京市", "log": "116.46", "lat": "3 ...

  7. kubernetes deployment升级和回滚

    a.创建deployment pod kubectl run mynginx --image=docker.io/nginx: --record 准备svc文件 apiVersion: v1 kind ...

  8. Win 10 和 Ubuntu 16.04 双系统,安装完成后,设置默认的启动项

    当安装好了 Windows 和 Ubuntu 双系统之后,默认的启动项是 Ubuntu,我们可以来设置默认的启动项, 开机时,在启动项选择处,可以通过↑↓ 键来选择启动哪个系统,第一行序号是 0 ,第 ...

  9. 2 OpenWrt路由器系统开发与网页设计

    https://www.zhongkerd.com/news/content-729.html 摘 要: 目前商用WiFi路由器已应用到多个领域,商家通过给用户提供一个稳定免费WiFi热点达到吸引客户 ...

  10. [解读REST] 3.基于网络应用的架构

    链接上文[解读REST] 2.REST用来干什么的?,上文中解释到什么是架构风格和应该以怎样的视角来理解REST(Web的架构风格).本篇来介绍一组自洽的术语,用它来描述和解释软件架构:以及列举下对于 ...