20175304 2018-2019-2 《Java 程序设计》第四周学习总结
教材学习内容总结
Java 为什么要定义接口: 接口的作用是实现多重继承, 因为一个子类只能继承一个父类, 但是可以实现一个或多个接口.
使用关键字 interface 来定义一个接口, 定义方式与类的定义很相似:
- interface xxx{
- void xxxx();
- }
接口中包含常量的声明 (没有变量, 且一定是 static 常量) 和抽象方法(接口中只有抽象方法)
接口由类来实现, 在类中声明时使用 implements 声明该类实现一个或多个接口(用逗号隔开)
如果一个非抽象类实现了某个接口, 那么这个类必须重写这个接口中的所有方法, 给出方法体, 去掉 abstract 修饰符, 访问权限用明显的 public 来修饰
抽象类既可以重写接口中的方法, 也可以直接拥有接口中的方法
接口可以被继承, 子接口继承父类中全部方法和常量.
接口也是一种重要的数据类型, 用接口声明的变量为接口变量
接口回调: 可以把实现某一接口的类创建的对象的引用赋值给该接口声明的接口变量, 那么该接口变量就可以调用被类实现的接口方法.(实际上是通知相应的对象调用该方法
由接口产生的多态是指不同的类在实现同一个接口时可能有不同的实现方式, 那么接口变量在回调接口方法时就可能具有多种形态.
如果一个方法的参数是接口类型, 我们就可以将任何实现该接口的类的实例的引用传递给该接口参数.
abstract 类与接口的比较:
1. 都可以有 abstract 方法
2. 接口中只有常量无变量, abstract 既有常量又有变量
3.abstract 类中也可以有非 abstract 方法, 接口不可以
如果需要从父类继承一些变量和一些重要的非 abstract 方法, 就考虑使用抽象类.
如果不需要继承, 只是若干个类给出抽象方法的实现细节就可以考虑使用接口
教材学习中的问题和解决过程
有关接口的声明和使用, 与之前所学的子类, 抽象类等概念密切相关, 因此学习起来较为简单. 没有很新的无法理解的概念.
代码托管
上周考试错题总结
错题 1: 题目如下:
- interface Some{
- void dosome ();
- }
- abstract class AbstractSome implements Some {
- public abstract void doSome();
- public void doService() {
- System.out.println("做一些服务");
- }
- }
- public class FinallyDemo {
- public static void main (String [] args) {
- AbstractSome s = new AbstractSome();
- s.doService();
- }
- }
以下描述正确的是()
A . 编译失败
B . 显示 "做一些服务"
C . 发生 ClassCastException
D . 执行时不显示任何信息
这道题的错误点出于疏忽, 只考虑了实现接口的类中, 方法是否严格的用 public 来修饰, 而忽略了抽象类无法实例化的另一重点.
感悟
本周的学习更像是复习, 里面很多的内容在之前的学习中就已经有了一些参考和涉猎, 踏实学好当下的内容, 对于以后的学习可以起到事半功倍之效.
学习进度条
代码行数(新增 / 累积) | 博客量(新增 / 累积) | 学习时间(新增 / 累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000 行 | 30 篇 | 400 小时 | |
第一周 | 41/41 | 2/2 | 20/20 | |
第二周 | 391/432 | 1/3 | 18/38 | |
第三周 | 841/1273 | 2/5 | 22/60 | |
第四周 | 385/1712 | 2/7 | 30/90 | |
第五周 | 378/2013 | 2/9 | 16/106 |
来源: http://www.bubuko.com/infodetail-3004149.html