目录
教材学习内容总结
第六章 接口与实现
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就接近了。
(有空多看看现代软件工程 课件
软件工程师能力自我评价表)