当前课程知识点:“做中学”Java程序设计 >  第3章使用面向对象基础语法 >  3.7重载方法 >  Video

返回《“做中学”Java程序设计》慕课在线视频课程列表

Video在线视频

Video

下一节:Video

返回《“做中学”Java程序设计》慕课在线视频列表

Video课程教案、知识点、字幕

Java中的重载方法不仅可以让我们对程序的调用带来极大的灵活

如果对构造方法进行重载

你可以添加不同的参数 灵活地创建这个对象

如果运用在实例方法或者静态方法当中你就可以提供更加强大而且灵活的方法套件

下面我们就一起来认识下重载方法吧

通过上一讲的学习

我们已经定义了一个三个参数的构造方法

然而在实际应用当中我们可能需要灵活的创建对象的方式

比如像这样你仅仅提供了两个参数

希望程序能够给你创建一个8点15分的时间对象

甚至你可能提供一个整型参数

希望程序能给你创建一个8点整的对象

如果你不给定任何参数希望程序给你创建一个0.0分零秒的默认对象

要做到这一点我们需要创建更多的构造方法

今天我们就来介绍一下方法的重载

所谓方法的重载是指在一个类当中允许定义多个同名的方法

为了让编译器在调用时能够区别它们

需要保证每个方法具有不同的参数的类型或者参数的个数

也就是说我们可以允许方法名字相同

但我们必须保证每个方法都有唯一的方法签名

还记得我们曾经讲过方法签名是我们调用方法的唯一依据

不管是实例方法静态方法构造方法

他们都可以拥有自己重载版本

在这段代码当中我们看到这里代码有个提示

它告诉我们

这个带两个参数的构造方法尚未被定义

让我们就需要在Time类的相应位置上添加一个带两个参数的构造方法

其内容就是我们将用户传入的10分信息保存到我们的实例变量当中

而将secnd 实例的变量置为0经过这样的修改

我们的错误那就消失了

你也可以将鼠标移动到错误的波浪线上

这时候会打开一个快速修改方案列表

我们可以根据提示的快速修改方案

来自动生成重载方法框架

在这几个修改方案当中 有些修改方案是对现有的各种方法添加一个新的参数

以适配当前的调用

有些是修改或者删除现有的构造方法的参数

以适配当前的调用

我们应该选择最后一个创建一个新的带一个参数的构造方法

点击链接以后

系统将生成一个带参数的构造方法

按tab键切换到

形式参数的定义部分

将其名字修改为hour

并将用户传入的参数保存到我们的实例变量当中

如果这个修改方案消失了

你可以使用ctrl加1这个快捷键打开这个快速修改方案

利用同样的方法我们来创建代码框架并填入相应的初始化代码

好了运行下我们的程序我们可以看到现在已经能够打印出我们需要的时间对象了

虽然这些代码能够正常工作

但是你会发现大量重复的代码

这样不便于我们的管理和维护

我们可以使用this方法来进行重载构造方法之间的相互调用

这里的this方法是对重载方法的一个调用

需要注意的是如果一个构造方法有多条语句构成

那么this重载方法的调用必须作为构造方法的第1条语句

此外你还需要注意

构造方法的它只在创建对象的时候才能调用

你无法通过引用变量去调用它们

比如在代码当中我们这样写就是一个错误

那么我们要想修改一个的时间对象

怎么办呢

只需要编写一个实例方法就可以了

比如我们可以将这个方法叫做setTime

考虑一下这个方法的实现是不是和我们第九行的构造方法是一样的呢

为了避免代码的重复我们可以将构造方法的相关代码

移动到setTime方法体中

在各地方不到相应位置上

通过调用实例方法来替代原有的代码

在代码实践当中要尽量避免重复的程序代码

最好的能够将容易变动代码维护下一个独立方法当中

以便于今后的修改和维护

同时要尽可能通过调用方法而不是拷贝粘贴来引用现有的代码

这些代码也告诉我们

可以在构造方法当中调用实例方法

但反过来实例方法当中却不能调用构造方法

运行下我们程序你可以看到时间现在已经被修改成9点20分30秒

要想更灵活的设置小时 分钟和秒钟你可以定义更多的实例方法

在实际开发当中

我们要将部分代码移动到新的方法当中

通过调用实例方法来替代原有的代码

Eclipse提供给我们方法抽取的功能

相应的快捷键alt加shift +M

通过它你可以将 相关的代码抽取成一个独立的方法

还原有的代码位置由一个方法调用来替代

就像这样 是不是很方便呢

在我们测试程序的过程当中

你可能会发现

如果我们设计一个小时为-19

-39这样的错误数据时

我们程序并不会检测出来

但是我们都知道

0到24才是我们小时的有效范围

那么怎么才能避免这些非法的数值呢

我们可以通过在相应的方法当中添加一些防卫语句来保证数据的有效性

比如我们在setHour方法当中

再赋值给实例变量的前面添加一个条件语句

使得的必须在传入的参数 是合法有效的前提下

才给我们的实例变量赋值

从而保证了实例变量的值始终在合法有效的范围内

类似的

可以对我们的分钟秒钟也做同样的处理

好了

我们今天的课就上了这里

你学会了吗

在这讲当中我们学习了重载方法的定义语法

使用this圆括号可以快速的调用同名的重载构造方法

通过方法的调用而不是复制粘贴来实现代码的复用

从而提高程序的可维护性

“做中学”Java程序设计课程列表:

第1章初始Java

-1.1Java简介

--01Java简介

-1.2搭建Java开发环境

--Video

-1.3使用记事本编写Java程序

--Video

-1.4使用Eclipse开发Java程序

--Video

-1.5导入/导出Java项目

--Video

-1.6管理组织代码

--Video

-第1章初始Java--测试题

第2章使用Java基本语法(1)

-2.1认识标识符

--Video

-2.2变量和变量类型

--Video

-2.3数据类型和类型转换

--Video

-2.4使用常量

--Video

-2.5使用注释

--Video

-2.6使用运算符进行算术运算

--Video

-第2章使用Java基本语法(1)--测试题

第2章使用Java基本语法(2)

-2.7使用运算符进行逻辑处理

--Video

-2.8使用if进行流程控制

--Video

-2.9使用switch进行流程控制

--使用switch进行流程控制

-2.10使用循环

--Video

-2.11循环的跳出和继续

--Video

-2.12多重循环

--Video

-第2章使用Java基本语法(2)--测试题

第3章使用面向对象基础语法

-3.1认识类和对象

--Video

-3.2为类添加属性

--Video

-3.3为类添加方法

--Video

-3.4为类添加静态方法

--Video

-3.5递归方法

--递归方法

-3.6构造方法

--Video

-3.7重载方法

--Video

-第3章使用面向对象基础语法--测试题

第4章使用面向对象高级语法

-4.1使用继承语法

--Video

-4.2使用数组

--Video

-4.3使用数组类操作数组

--Video

-4.4使用抽象类

--Video

-4.5使用接口

--Video

-第4章使用面向对象高级语法--测试题

第5章捕获并处理异常

-5.1异常处理机制

--Video

-5.2捕获异常

--Video

-5.3创建自定义异常

--Video

-第5章捕获并处理异常--测试题

第6章使用SWT设计界面

-6.1SWT图形界面

--Video

-6.2使用SWT布局管理-FillLayout

--使用SWT布局管理-FillLayout

-6.3使用SWT布局管理-RowLayout

--使用SWT布局管理-RowLayout

-6.4SWT中的事件模型

--Video

-6.5常见事件处理写法

--Video

-第6章使用SWT设计界面--测试题

第7章微波炉模拟程序

-7.1微波炉模拟程序的界面制作

--Video

-7.2微波炉模拟程序的代码重构

--Video

-7.3微波炉模拟程序的事件监听

--Video

-7.4微波炉模拟程序的数字键盘

--Video

-7.6微波炉模拟程序CookTimer

--Video

-7.7微波炉模拟程序添加图像

--Video

-7.8微波炉模拟程序添加声音

--Video

-7.9微波炉模拟程序安装包制作

--Video

Video笔记与讨论

也许你还感兴趣的课程:

© 柠檬大学-慕课导航 课程版权归原始院校所有,
本网站仅通过互联网进行慕课课程索引,不提供在线课程学习和视频,请同学们点击报名到课程提供网站进行学习。