函数
函数的定义
函数声明的格式
函数的特点
声明函数的注意事项
函数的应用
函数的重载
--------------------------------------------------------------------------------
1. 函数定义
函数就是定义在类中的具有特定功能的一段独立的小程序.
类的一个函数就是类的一个独立的功能.
Java 中对功能的定义是通过函数的形式来体现的.
函数也称为方法.
--------------------------------------------------------------------------------
2. 函数声明的格式:
/*
修饰符 <类型参数> 返回值类型 函数名(参数类型 形参1, 参数类型 形参2, ...) {
执行语句;
return 返回值;
}
注意:
(1) "返回值类型"始终紧挨在"函数名"之前, 而"<类型参数>"始终紧挨在"返回值类型"之前
(2) 函数签名
非泛型函数函数签名包括: "函数名"和"参数列表"
泛型函数函数签名包括: "函数名"和"擦除泛型后的'参数列表'"
函数签名是否相同: "函数名" 和 "参数列表" 都相同, 则函数签名相同
(3) 参数列表
参数列表是否相同: 参数个数, 参数类型, 参数顺序都完全相同, 则参数列表相同
其他说明:
> 修饰符: 函数外加功能的修饰. 具体见"函数修饰符"
> 类型参数: 用于定义泛型函数的类型参数.
> ***函数名: 函数的名称, 有2个功能: (1) 标识函数 (2) 表明函数功能
> 参数类型: 形参的数据类型
> 形式参数/形参: 是一个变量, 用于存储调用函数时传递给函数的实际参数
> 实际参数/实参: 传递给形式参数的具体数值
> ***return关键字: 用于结束函数, 并将返回值返回给调用者
> 返回值类型: 函数运行完毕, 返回的结果的数据类型
> 返回值: 函数运行完毕返回的值, 会返回给调用者
*/
类的函数修饰符:
MethodModifier: one of
Annotation public protected private
abstract static final synchronized native strictfp
注意:
(1) 权限修饰符只能3选1或不写
(2) abstract 与 private, static, final, synchronized, native, strictfp 不能组合使用
(3) 其余都可以组合使用
(4) 对修饰符的顺序没有要求
接口的函数修饰符:
InterfaceMethodModifier: one of
Annotation public
abstract default static strictfp
注意:
(1) abstract, default, static 只能3选1
(2) abstract 和 strictfp 冲突
--------------------------------------------------------------------------------
3. 函数的特点
> 定义函数可以将功能代码进行封装, 便于对功能进行复用.
> 函数的出现提高了代码的复用性
> 函数只有被调用才会被执行
--------------------------------------------------------------------------------
4. 声明函数的注意事项
> 定义函数时, 只定义对应的功能, 而不应定义对应功能之外的功能.
> 函数中只能调用函数, 不可以在函数内部定义函数.
> 定义函数时, 返回值的结果应该返回给调用者, 交由调用者处理.
> 当函数没有返回值时, 返回值类型用关键字 void 表示,
此时, 该函数中的 return 语句如果在最后一行, 可以省略不写
> 语句都应定义在函数/构造代码块/静态代码块内
p.s.
调用函数时, 必须传入和被调用函数参数列表对应的实参
如函数返回值为 void 时, 函数结果不能被输出语句输出.
因为 System.out.println()等函数的参数列表与 void 类型不匹配.
--------------------------------------------------------------------------------
5. 函数的应用/如何定义一个函数(功能)
(1) 先明确返回值类型
既然函数是一个独立的功能, 那么该功能的运算结果是什么.
(2) 再明确参数列表(参数个数, 参数类型和参数顺序)
再明确在定义该功能的过程中是否需要未知的内容参与运算.
--------------------------------------------------------------------------------
6. 函数重载 overload
6.1 重载定义
在同一个类中, 允许存在一个以上的同名函数, 只要它们的参数列表不同即可.
6.2 重载的特点:
重载与返回值类型无关, 只要它们的参数列表不同即可.
参数列表是有顺序的. (int x, doubule y)与(doubule m, int n)是不同的参数列表.
6.3 重载的好处
方便阅读, 优化程序设计
6.4 重载示例
// 返回2个整数之和
int add(int x, int y) {return x + y;}
// 返回3个整数之和
int add(int x, int y, int z) {return x + y + z;}
// 返回2个浮点数之和
double add(double x, double y) {return x + y;}
6.5 什么时候用重载?
当定义的功能相同, 但参与运算的未知内容不同时.
"功能相同", 所以使用相同的函数名, 方便阅读
"参与运算的未知内容不同", 所以参数列表不同
-------------------------------------------------------------------------------- |
|