《Java程序设计》第四周学习总结
教材学习内容总结
本周学习了课本第六、七章内容,即继承与多态、接口与多态。
第六章 继承与多态
- 继承就是避免多个类间重复定义共同行为。
- 想要要避免在程序设计上出现重复,可以用子类继承父类,把相同的程序代码提升为父类。
- 使用 extends 关键字继承。
eg.代码如下:

6.1.2 多态与is-a
- 在java中,子类只能继承一个父类,子类父类间会有is-a关系。
- 检查语法逻辑是否正确的方法是从=右边往左读,右边类是不是左边类的子类。
eg.代码示例:
讯享网

- 多态:使用单一接口操作多种类型的对象。
6.1.3 重新定义行为
- 在继承父类之后,定义与父类中相同的方法部署,但执行内容不同,这称为重新定义。
- 在重新定义父类中某个方法时,子类必须撰写与父类方法中相同的签署。
- 如果要重新定义某方法,加上@Override,就不用担心错字问题了。
eg:代码如下:

6.1.4 抽象方法、抽象类
- 如果某方法区块中没有任何程序代码操作,可以使用abstract标示该方法为抽象方法,该方法不用撰写{}区块,直接“;”结束即可
eg.
讯享网
- 抽象类:内含抽象方法的类,一定要在class前标示abstract,表示这是一个定义不完整的类,不能实例化抽象类。
- 子类继承抽象类,对于抽象方法有两种做法:1.继续标示该方法为abstract。2.操作抽象方法。
6.2 继承语法细节
6.2.1 protected成员
- 被声明为protected的成员,相同包中的类可以直接存取,不同包中的类可以在继承后的子类直接存取。
- java中三个权限关键字:private、protected与public,若不知使用哪个,就先使用private。权限关键字与权限范围关系如下图:

SwordsMan.java
Magician.java
6.2.2 重新定义的细节
- 如果想取得父类中的方法定义,可以在调用方法前,加上super关键字,但不能定义为private(因为这就限定只能在类内使用)。
- 重新定义方法要注意,对于父类中的方法权限,只能扩大但不能缩小。若原来成员public,子类中重新定义时不可为private或protected。
6.2.3 再看构造函数
- 如果类有继承关系时,会先进行父类定义的初始流程,再进行子类定义的初始流程。
- 构造函数可以重载,父类中可以重载多个构造函数,如果子类构造函数中没有制定执行父类中哪个构造函数,默认会调用父类中无参数构造函数。
- 注意this()和super()只能择一调用,并且要写在构造函数第一行执行。
6.2.4 再看final关键字
如果class前使用了final关键字定义,那么表示这个类是最后一个了,不会再有子类即不能被继承。
6.2.5 java.lang.Object
在Java中,子类只能继承一个父类,如果定义类时没有使用extends关键字指定继承任何类,那一定是继承java.lang.Object。任何类追溯至最上层父类,一定就是java.lang.Object。
代码如下:
- 定义ArrayList类,可以不限长度地收集对象。
- 使用ArrayList类,可收集访客名称,并将名单转为大写后显示。
6.2.5 关于垃圾收集
- 创建对象会占据内存,如果程序执行流程中已无法再使用某个对象,该对象就只是耗内存的垃圾。
- JVM有垃圾收集机制,收集到的垃圾对象所占据的内存空间,会被垃圾收集器释放。
- 执行流程中,无法通过变量参考的对象,会被JVM认定为垃圾对象。
第七章 接口与多态
7.1何谓接口
7.1.1接口定义行为
- 类要操作接口,必须使用implements关键字。
- 操作接口时,对接口中定义的方法有两种处理方式:1.操作接口中定义的方法2.再度将该方法标示为abstract。
- 继承会有“是一种”关系,操作接口表示“拥有行为”,但不是“是一种”的关系。
代码如下:
- 在java中可以使用interface关键字定义:
- Fish拥有Swimmer行为:
- Humman要能游泳
- Submarine也有Swimming的行为
7.1.2行为的多态
判断方式是“右边是不是拥有左边的行为”,或者“右边对象是不是操作了左边接口”。
代码如下:

- 使用interface定义Flyer接口:
- Airplane.java
- FlyingFish.java
- Ocean.java
7.2 接口语法细节
7.2.1 接口的默认
在java中,可使用interface来定义抽象的行为与外观,如接口中的方法可声明为public abstract。
代码如下:
- 在interface中,可以定义常数。
- 枚举常数

代码如下:
- 假设打算开发多人联机程序,对每个联机客户端,都会建立Client对象封装相关信息
- 将Client加入或移除的信息包装为ClientEvent。
- ClientListener.java
- ClientQueue.java
- MultiChat.java

7.2.3 使用enum枚举常数
enum可以用于定义枚举常数。
enum定义了特殊的类,继承自java.lang.Enum,直接撰写程序继承Enum类会被编译程序拒绝。

代码如下:
- 定义枚举常数
- 利用Action声明类型

代码调试中的问题和解决过程
cmd和idea软件有何区别?有的程序两者都可以运行,有的则不行。 对于乱码问题还是有些困惑。
git托管代码 如何才能让上传到一个分支的代码在一起显示?目前包括之前上传的代码和新上传的代码全部混在一起。
本周代码托管截图


程序设计基础java课本


其他(感悟、思考等,可选)
本周学习了java第六章第七章的内容。通过本周的学习,了解到java中每一个项目并不是独立的,通过应用接口,他们之间可以相互搭配,相互引用,建立起桥梁,形成树状的结构,这样就可以编写更加复杂的程序。同时通过子类继承父类避免重复的行为定义,一定程度上简化程序。要能判断使用继承的时机,并且灵活应用。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/1389.html