当前课程知识点:“做中学”Java程序设计 > 第3章使用面向对象基础语法 > 3.3为类添加方法 > Video
一个类除了属性
另外一个非常重要的成员 那就是方法了
属性描述了对象的数据信息而方法则是可以操纵和处理这些数据的
下面呢 结合上一次的实例 我们来讲解Java当中的方法的定义和使用
目前为止
每个要显示的时间信息需要三条打印语句
这显得非常繁琐
我们可以把显示时间信息的功能封装成一个独立的方法
通过调用该方法来完成时间的显示
那么 什么是方法
如何定义自己的方法呢
今天我们就来学习
Java当中的方法
方法的主要作用就是对类当中定义的状态数据进行操作和处理
换句话说
方法可以改变对象的状态也可以访问对象当中的状态数据
而且 和属性一样
方法总是 从属于某个特定的类
他也是类的重要组成成员
下面我们来看看方法的定义语法
一个方法的完整定义是由方法头部和方法体两部分构成
方法头部 主要由修饰符 返回值 方法名 参数列表构成
这里的修饰符主要可以分成两大类一个是访问权限控制符我们先面讲过的private
public protected 和 default
他们都是我们Java当中的访问权限控制符
public访问权限允许任何人在任何地方访问该方法
private访问权限呢 只允许在声明该方法的类当中进行访问
protected允许继承的子类可以访问这些方法
而default允许同一个包当中的其他类能够访问这些方法
这点和类的访问权限非常相似
第二类那 就是我们的可选控制符
他们可以由static final abstract native synchronize
这些关键字构成
需要注意的是可选控制符不必全部出现
也不是只能出现一个
要根据用户的实际需求来定
这也就是可选的含义
接下去是返回值类型
通常情况下
方法都必须有返回值
如果一个方法没有返回值那么就必须用void来表示
否则用户就需要指定返回值的数据类型
紧跟在返回值类型后面的就是方法名
方法名可以是任何符合java标识符定义的字符串
通常他们是由动词或者动名词构成的
在方法名之后的一对圆括号当中包含的就是参数列表
每一个参数 如同一个占位符
它代表了用户实际传入的某个数据
在调用该方法的时候用户将向这个参数位置呢传递实际数据
因此我们也称之为形式参数
而将用户在调用方法的时候实际传入的数据称之为实参
参数列表当中的每一个形式参数由数据类型 参数名两部分构成
多个参数之间用逗号进行隔开
参数是可选的
也就说 一个方法 可以不带任何的参数
但是这个圆括号不能省略
接着呢 是一个由
大括号构成的方法体 我们将相关的代码就写在这个方法体内部
如果有返回值的话
你必须写上一个return语句
需要补充的是
为了简单起见
我们通常将 方法头部当中包含修饰符 返回值 类型方法名 参数列表称之为方法的签名
方法的签名与形式参数的变量名没有关系
比如两个数求最大值的一个方法签名
方法签名不在乎形式变量的名字
它是我们识别不同的方法
同时(也是)调用相关方法的一个重要依据
定义好了方法以后那 我们就可以调用语法来执行这些方法
在同一个类当中调用方法可以使用如下的格式来进行调用
理解方法的调用顺序
对于分析方法的执行情况非常重要
Java中使用调用栈来管理方法的调用顺序
在开启一个Java的线程的时候
他会同时创建一个调用栈
来管理调用的方法
如果你把调用栈看成是一个水杯
而每个执行的方法看成是一个乒乓球的话
调用栈的运作机制有一点类似于杯子管理乒乓球的模式
比如在这段代码当中程序从
包含main的方法开始执行
这时候栈当中保存了初始执行的main方法
就像水杯中
放入了一个乒乓球
当运行到max方法调用时
main方法 并未结束
这时候
新的方法将加入到调用栈当中
就像这里
新的乒乓球将叠放到
栈的上方
现在程序将中断main的运行 跳转到max方法进行执行
随着max方法运行的结束
程序的控制流又回到了主方法main当中
这个过程有如从水杯当中取出了一个运行完的乒乓球
接着程序的运行直到完成整个main方法的执行
完成后
main方法也将退出整个调用栈
知道了这些以后呢 下面我们就一起来定义一个打印标准时间格式的方法
我们可以在Time类当中编写一个public方法
取名为
to standard string
他返回一个字符串
为了返回一个以冒号分隔的标准时间字符串
我们可以使用String.format方法
该方法的一个参数是格式字符串
我们用%02d
这个格式化字符串来表达
这里的%02d是一个占位符
最后呢 会用后面的实际参数值来替代这里
同时我们指定了每个数字的标准场宽是由两个有效数字构成
如果不足两位
则在前面添加前导数0
随后呢 我们用三个实际数值来替代这个占位符
他们应该取自时间对象的相应属性信息
需要注意的是
在上一讲当中我们讲过
要引用对象的属性
需要通过引用变量.属性名的方式
由于在同一个类当中
访问属性
我们不需要额外的去创建一个对象 可以使用Java提供的一个特殊关键字this
来表达当前对象的一个引用
也就是说我们要在同一个类当中的方法引用自己属性
可以使用this.属性的方式来引用
甚至在没有歧义的情况下
还可以进一步的简化
Java允许你将this. 进行省略
比如像这样
他们都是合法的
方法写好了我们接下来来测试一下它的效果
在App类当中
直接调用t.toStandardString来替代原来三行代码
你看是不是简单多了
在这讲当中
我们学习了Java的方法的定义语法
方法的调用语法
以及this引用的相关知识
方法作为代码的封装体
为我们复用相关的程序代码
执行重复操作提供了可能
-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.1认识标识符
--Video
-2.2变量和变量类型
--Video
-2.3数据类型和类型转换
--Video
-2.4使用常量
--Video
-2.5使用注释
--Video
-2.6使用运算符进行算术运算
--Video
-第2章使用Java基本语法(1)--测试题
-2.7使用运算符进行逻辑处理
--Video
-2.8使用if进行流程控制
--Video
-2.9使用switch进行流程控制
-2.10使用循环
--Video
-2.11循环的跳出和继续
--Video
-2.12多重循环
--Video
-第2章使用Java基本语法(2)--测试题
-3.1认识类和对象
--Video
-3.2为类添加属性
--Video
-3.3为类添加方法
--Video
-3.4为类添加静态方法
--Video
-3.5递归方法
--递归方法
-3.6构造方法
--Video
-3.7重载方法
--Video
-第3章使用面向对象基础语法--测试题
-4.1使用继承语法
--Video
-4.2使用数组
--Video
-4.3使用数组类操作数组
--Video
-4.4使用抽象类
--Video
-4.5使用接口
--Video
-第4章使用面向对象高级语法--测试题
-5.1异常处理机制
--Video
-5.2捕获异常
--Video
-5.3创建自定义异常
--Video
-第5章捕获并处理异常--测试题
-6.1SWT图形界面
--Video
-6.2使用SWT布局管理-FillLayout
-6.3使用SWT布局管理-RowLayout
-6.4SWT中的事件模型
--Video
-6.5常见事件处理写法
--Video
-第6章使用SWT设计界面--测试题
-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