20175209 《Java程序设计》第五周学习总结
一、教材知识点总结
1.接口的定义
- 接口声明:关键字interface
- 接口体:public static final 修饰常量,public abstract 修饰方法(均可省略)
2.接口实现
- 关键字implements定义格式:
- class 类名 implements 接口名
- 重写方法
- 非抽象类必须全部重写(public修饰)
- 抽象类可以选择是否重写
- 实现友好接口需要在同一包中
3.接口回调:把可实现的接口的对象党的引用赋值给接口变量,接口变量可以调用被类实现的接口方法
- 接口无法调用非接口方法
- 在调用方法时,实参为接口类型方可实现接口回调(接口参数)
4.abstract类与接口
- 共同点:均可以有abstract方法
- 区别:接口中无变量,接口中不可以有非abstract方法
5.子类与父类的关系和子类与接口的关系的说明
子类与父类是所属关系,父类中的行为基本可被子类继承使用;而子类和接口的关系更像是功能的所有关系,子类拥有接口中给出的功能,功能的具体内容由子类具体实现
二、教材中的问题和解决方法
- 问题1.不理解子类与父类的关系和子类与接口的关系有什么区别
问题1解决方案:开始的时候觉得这两者很像,不明白具体的区别在哪,在学完6.9节的内容并与5.10节的内容进行对比,并在网上观看了相关的解释,总结出了适合自己记忆的区别方法,在前面第5点已经给出自己的理解 - 问题2:在编写课后编程题的代码时编译总是无法通过
问题2解决方案:反复编译并对照书上的程序后发现子类在重写接口中的方法时没有加上关键字public
编程题代码:
public class lianxi6 {
public static void main(String[] args) {
Simulator6 simulator = new Simulator6();
simulator.playSound(new Dog_6());
simulator.playSound(new Cat_6());
}
}
interface Animal6 {
void cry();
String getAnimalName();
}
class Simulator6 {
public void playSound(Animal6 animal) {
System.out.println("播放"+animal.getAnimalName()+"的声音");
animal.cry();
}
}
class Dog_6 implements Animal6 {
public void cry() {
System.out.println("汪汪汪");
}
public String getAnimalName() {
return "狗";
}
}
class Cat_6 implements Animal6 {
public void cry() {
System.out.println("喵喵喵");
}
public String getAnimalName() {
return "猫";
}
}
运行结果:
代码托管及脚本运行截图
https://gitee.com/wangzihong/20175209
心得体会
本章的内容较少,因此并没有花费太多时间,主要时间放在了理解方面,同时学了这么多的知识已经有能力去编写一些简单的程序了,因此要能够消化好所学的知识,避免出现会说不会用的情况。
学习进度条
代码行数(累计总数) | 博客量 | 学习时间 | |
---|---|---|---|
目标 | 8000 | 40 | 300 |
第一周 | 19 | 1 | 12 |
第二周 | 309 | 2 | 15 |
第三周 | 740 | 3 | 10 |
第四周 | 1468 | 4 | 10 |
第五周 | 1922 | 8 | 8 |