21045234黄斐《java程序设计》第四周
教材学习内容总结
第六章部分 - 继承与多态
何谓继承
继承
面向对象中,子类继承父类,避免重复的行为定义。一般来说,父类的父类也称父类,且同一个子类只允许拥有一个父类,而同一个父类则可以拥有多个子类。继承的出现提高了代码的复用性,也让类与类之间产生了关系,提供了多态的前提。在Java中,使用关键字extends来表示类与类之间的继承关系:
public class SwordsMan extendsRole中类SwordsMan继承了类Role,类SwordsMan扩充了类Role的行为,也就是类Role中有定义的程序代码,类SwordsMan因为继承而都拥有了。- IS-A
注意建立对象时候的顺序,应该遵守从右往左读的原则(这样才符合IS-A原则):
Role role1 = new SwordsMan();
Role role2 = new Magician();赋值时:如果用父类建立了一个对象实例,那么要将这个对象赋给它的子类时,需要进行强制转:
Role role1 = new SwordsMan();
SowrdsMan swordsMan = (SwordsMan) role1;我们还可以使用instanceof来判断IS-A关系:
System.out.println(SwordsMan instanceof Role); \\输出true
System.out.println(Role instanceof SwordsMan); \\输出false多态
按照字面的意思上说,就是多种状态。指的是使用一个接口,操作多种类型的数据。- 覆盖(Override)
- 一般来说,当子类和父类具有一模一样的方法时,会出现覆盖操作,也就是重新定义行为。因为子类一般来说都有其独特的功能,父类一般的函数定义不能满足每个不同角色的需要。
- 函数的覆盖也更好的体现了面向对象的多态性。
- 要将覆盖(Override)与重载(Overload)区分开:覆盖除了保留了原有的相同方法部署,但执行内同不同,方法是一样的;而重载指的是函数名相同,但调用变量的类型个数都不同,是不同的函数,并不存在某个函数把某个函数覆盖的情况。
- 注意:
- 通常,我们会在子类中重新定义行为前加上\@Override,用以判断该方法是否真的重新定义了父类中的一个方法。
- 重新定义方法时,对于父类中的方法权限,只能扩大不能缩小。
- 抽象方法、抽象类
- abstract:对于一个类的方法区块中实际上没有撰写任何程序代码,为了避免不被漏掉,可以使用abstract标示该方法为抽象方法。该方法不用撰写{}区块,直接“;”结束即可。
- 注意:
- Java中有抽象方法的类一定是抽象类,但抽象类中的方法不一定都是抽象方法。
- 象类,但抽象类中的方法不一定都是抽象方法
Square(正方形)类继承Rectangle(矩形)类合适吗?
合适,因为正方形是一种(IS-A)矩形,它拥有矩形的一般特点。
IS-A译为“是一种”,子类与父类就是一种“IS-A”的关系。
在重新定义父类中的某个方法时,除了可以定义权限较大的关键字外,子类必须撰写与父类方法中相同的签 署。如果函数名打错了,那就不是重新定义了,而是子类新定义了一个方法函数。
继承语法细节
- protected成员:被声明为protected的成员,相同包中的类可以直接存取,不同包中的类可以在继承后的子类直接存取。
- 重新定义的细节:在调用方法前加上super关键字,重新定义父类中的方法在子类中权限只能扩大不能缩小,在jdk5之后返回类型也可以是父类中方法返回类型的子类。
- 构造函数。
- 垃圾收集:对于不再有用的对象,JVM的垃圾收集器会将其释放。不同的需求会有不同的垃圾收集算法。
- 抽象类:如果还有些方面没有确定,可以调用抽象方法,等到平台确定后,再对代码进行符合这个平台的完善就行。
public class Role1{
private String name;
private int level;
private int blood;
第七章部分 - 接口与多态
何谓接口
- 接口定义行为
- 对于定义行为,Java中可以使用interface关键字定义。
- 是一种特殊的类,里面全部是由全局常量(static final)和公共的抽象方法所组成。
- 接口的数据成员,只允许被public, static, final修饰。
接口的方法成员,只允许被public, abstract修饰。 - 接口中的数据成员都为static final类型,必须进行初始化,且接口的数据成员的值不能被修改,允许省略static, final关键字。
- 接口中的方法必须是“抽象方法”,不能有方法体,允许省略public及abstract关键字。
- 对于接口多态语法的判断,方式是“右边是不是拥有左边的行为”,或者“右边对象是不是操作了左边接口”。
- implements
- 接口不能用new运算符直接产生对象,必须利用其特性设计新的类,再用新类来创建对象与抽象类一样,接口要使用也必须通过子类,子类通过implements关键字实现接口。
- 操作某接口时,对接口中定义的方法有2种处理方式,一是操作接口中定义的方法,二是再度将该方法标示为abstract.
实现格式:
class 子类名称 implements 接口A,接口B,….{
//子类成员声明
}
- 解决需求变更
需求会不断变化,架构也有可能因此而修改。好的架构在修改时,其实也不会全部的程序代码都被牵动,这就是设计的重要性。一般来说,会确定一个程序的需求边界,然后设计好架构,接着就是不断朝着这个方向进行优化。
接口语法细节
- 接口中的
public abstract可以省略,但要注意:接口中的方法必须是“抽象方法”,不能有方法体,允许省略public及abstract关键字。 - 接口中可以使用extends继承接口,并且可以继承多个接口
- 接口不能继承一个抽象类,却可以通过extends同时继承于多个接口。
- 例如:
interface A extends B, C{……}
- 匿名内部类
- 匿名内部类也就是没有名字的内部类。正因为没有名字,所以匿名内部类只能使用一次,它通常用来简化代码编写,但使用匿名内部类还有个前提条件:必须继承一个父类或实现一个接口。
- JDK8 前在匿名内部类中访问局部变量,则该局部变量必须为final
- enum
可以用于定义常量,例如:
public enum Color {
RED, GREEN, BLANK, YELLOW
}可以用于switch语句,将enum定义的枚举常数用以switch判断选择。
考试错题解析
1. 填空:Linux Bash中,(grep )命令可以进行全文搜索。
4. 填空:System.out.println(“”+52+25);的结果是(5225)
5. 填空:System.out.println(52+25+””);的结果是(77)
8. CH04 填空:p86 命令行下编译Guess.java的命令是(javac -d . Guess.java)
9. CH04 判断:p86 Guess.java中guess的值无法输入12。(X)
11. CH04 判断: Java中,=与==并没有在基本类型和类类型的不同。(OK)
14. CH04 填空:Java中的多维数组都是由(一维数组组成)。
16. CH04 填空:p104 CopyArray.java 中修改int [] scores2 = Arrays.copyOf(scores1, scores1.length,使得输出的第二行只有前五个元素,修改后的代码为(int [] scores2 = Arrays.copyOf(scores1, scores1.length/2) 或int [] scores2 = Arrays.copyOf(scores1, 5) )
24. CH05 判断:Java中类总会有默认构造方法。(X)
29. CH05 填空:Java中成员方法中引用成员变量,要使用(this)关键字。
32. CH05 判断:Java中方法内可以定义类。(OK)
学习进度表

21045234黄斐《java程序设计》第四周的更多相关文章
- Java程序设计第四周学习总结
1. 本周学习总结 1.1 尝试使用思维导图总结有关继承的知识点. 1.2 使用常规方法总结其他上课内容. 答:①String类是final类,不能定义String的子类. ② instanceof ...
- 20145222黄亚奇《Java程序设计》课程总结
20145222黄亚奇<JAVA程序设计>课程总结 每周读书笔记链接汇总 第一周读书笔记 第二周读书笔记 第三周读书笔记 第四周读书笔记 第五周读书笔记 第六周读书笔记 第七周读书笔记 第 ...
- 20145213《Java程序设计》第四周学习总结
20145213<Java程序设计>第四周学习总结 教材学习内容总结 本周任务是学习面向对象的继承.接口以及之后的如何活用多态.(还真是路漫漫其修远兮啊!)教材也是延续上周艰深晦涩的语言风 ...
- 20145330《Java程序设计》第四周学习总结
20145330<Java程序设计>第四周学习总结 一周两章新知识的自学与理解真的是很考验和锻炼我们,也对前面几章我们的学习进行了检测,遇到忘记和不懂的知识就再复习前面的,如此巩固也让我对 ...
- 20145337《Java程序设计》第四周学习总结
20145337<Java程序设计>第四周学习总结 教材学习内容总结 继承与多态 继承 继承,避免多个类间重复定义共同行为 符合DRY(Don't Repeat Yourself)原则,多 ...
- 20145222黄亚奇《Java程序设计》第10周学习总结
20145222 <Java程序设计>第10周学习总结 学习总结 网络编程 网络编程就是在两个或两个以上的设备(例如计算机)之间传输数据.程序员所作的事情就是把数据发送到指定的位置,或者接 ...
- 20145218 《Java程序设计》第四周学习总结
20145218 <Java程序设计>第四周学习总结 教材学习内容总结 继承 继承共同行为 继承基本上就是避免多个类间重复定义共同行为. 继承的三个好处:减少代码冗余:维护变得简单:扩展变 ...
- 《Java程序设计》第四周学习总结
20145224-陈颢文 <Java程序设计>第四周学习总结 教材学习内容总结 第六章 继承与多态 ·继承就是面向对象中,子类继承父类,避免重复的行为定义.重复再程序设计上是非常不好的信号 ...
- 20155304 2016-2017-2 《Java程序设计》第四周学习总结
20155304 2016-2017-2 <Java程序设计>第四周学习总结 教材学习内容总结 第六章 继承: 概念: 面向对象中,为避免多个类间重复定义共同行为.(简单说就是将相同的程序 ...
随机推荐
- 理解活在Iphone中的那些App (一)
关于一个app的生命 干IOS开发两年多了,如果把大学中的时间也算上,编程也有六年了.这些时间中,从一个懵懵懂懂的学徒,变成一个还算熟练的码农,也多多少少有一点反思.于是,边促成了理解活在Iphone ...
- es6面试题--Promise相关
1. const promise = new Promise((resolve, reject) => { console.log(); resolve(); console.log(); }) ...
- Ext之grid內編輯
Ext.grid.Panel xtype:gridpanel,grid 如果要完成在grid中編輯的功能.首先要填加 selType: 'cellmodel', plugins: [ ...
- CDN的作用与基本过程
转载请注明出处: leehao.me 或 https://blog.csdn.net/lihao21/article/details/52808747 简介 CDN,Content Distribu ...
- ASP.Net GridView 基础 绑定字段
通过以前的学习,我们实现了效果如下: 现在我想修改显示/隐藏部分列,有两种做法: 一.在配置数据源的时候不是有查询哪些字段的吗,去除不需要的字段,重新绑定. 二.就是直接编辑列 下面是分析每种字段类型 ...
- JavaScript or jQuery 获取option value值 以及文本内容的方法
1.html <div class="form-group"> <label>保险公司</label> <select class=&qu ...
- EF Core中外键关系的DeleteBehavior介绍(转自MSDN)
Delete behaviors Delete behaviors are defined in the DeleteBehavior enumerator type and can be passe ...
- OpenID Connect Core 1.0(八)从第三方发起登录
在某些情况下,登录流程由一个OpenID提供者或其他方发起,而不是依赖方(RP).在这种情况下,发起者重定向到RP在发起登录终结点,RP的请求验证请求发送到指定的OP.这个发起登录终结点可以在RP深度 ...
- orcal 数据库 maven架构 ssh框架 的全xml环境模版 及常见异常解决
创建maven项目后,毫不犹豫,超简单傻瓜式搞定dependencies(pom.xml 就是maven的依赖管理),这样你就有了所有你要的包 <project xmlns="http ...
- BUAA_OO第二单元总结性博客作业——多线程电梯架构
一.设计策略 在第一次作业时,我刚第一次接触多线程这个东西……于是乎对于第一次VIP直上直下一次只接一个人的电梯,我借鉴了指导书中为我们提供的架构,设计了一个输入线程和一个电梯线程,并设置了一个中间类 ...