学号 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. C# 中一些类关系的判定方法

    1.  IsAssignableFrom实例方法 判断一个类或者接口是否继承自另一个指定的类或者接口. public interface IAnimal { } public interface ID ...

  2. JavaScript 节流函数 Throttle 详解

    在浏览器 DOM 事件里面,有一些事件会随着用户的操作不间断触发.比如:重新调整浏览器窗口大小(resize),浏览器页面滚动(scroll),鼠标移动(mousemove).也就是说用户在触发这些浏 ...

  3. Win10 Ubuntu子系统运行32bit Linux原生程序

    本文主要描述的是:解决  Win10 Ubuntu子系统中运行  32bit Linux原生程序 报错  Exec format error . 问题来源于  在 Win10 Ubuntu子系统中运行 ...

  4. go学习笔记(一)

  5. 影响Linux发展的四位天才黑客

    影响Linux发展的四位天才黑客 相信大家对 Linux 再熟悉不过了.我们都知道 Linux继承自 Unix,但其实他们上一代还有一个 Multics.从最早的 Multics 发展到最早版本的 L ...

  6. RecyclerView的Item的单击事件

    RecyclerView 的每个Item的点击事件并没有像ListView一样封装在组件中,需要Item的单击事件时就需要自己去实现,在Adapter中为RecyclerView添加单击事件参考如下: ...

  7. [十二省联考2019]D1T1异或粽子

    嘟嘟嘟 做这题之前,强烈推荐先把这道题切了P1631序列合并. 这两道题思路基本一模一样. 首先把异或处理成前缀异或,然后维护一个大根堆,每一次取出堆顶加到答案里面,然后把堆顶所在元素的次大的异或值放 ...

  8. 016_python程序变量抽取配置的几种方式

    一.json配置文件 json文件的互转,如下例子: 配置文件:example.json { "mysql":{ "host":"localhost& ...

  9. gdb cheat sheet

    0x01 控制流 r run,运行程序. r < a.txt   run,重定向输入 si   step instruction 进入函数 ni      next instruction 下一 ...

  10. springmvc源码分析——入门看springmvc的加载过程

    本文将分析springmvc是如何在容器启动的时候将各个模块加载完成容器的创建的. 我知道在web.xml文件中我们是这样配置springmvc的: 可以看到,springmvc的核心控制器就是Dis ...