A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© lucascgz 中级黑马   /  2015-12-6 10:10  /  715 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

函数
        函数的定义
        函数声明的格式
        函数的特点
        声明函数的注意事项
        函数的应用
        函数的重载
--------------------------------------------------------------------------------
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 什么时候用重载?
        当定义的功能相同, 但参与运算的未知内容不同时.
                "功能相同", 所以使用相同的函数名, 方便阅读
                "参与运算的未知内容不同", 所以参数列表不同
--------------------------------------------------------------------------------

1 个回复

倒序浏览
大挽尊术
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马