声明格式

[修饰符] 返回值类型 方法名(形式参数列表){
多条java语句;
}

方法运行过程(栈帧

  • 每个方法均会在栈空间内开辟一块存储空间,名为栈帧(stack frame)
  • 栈帧用以存储传入的参数的值以及内部变量的值
  • 方法执行返回语句后,该方法的栈帧从栈中出栈

方法重载

定义

方法的重载(overload)是指在一个类中可以定义多个方法名相同,但参数不同的方法,调用时会根据不同的参数自动匹配对应的方法。

构成方法重载的条件

  • 不同的含义:形参类型、形参个数、形参顺序不同
  • 只有返回值不同不构成方法的重载,如 int a(String str){} 与 void a(String str){}
  • 只有形参的名称不同,不构成方法的重载,如 int a(String str){} 与 int a(String s){}

    1. public class TestOverload{
    2. public static void main(String[] args){
    3. add(100,200);
    4. add(100.25,200);
    5. dd(100,200.25);
    6. add(100,200,300);
    7. }
    8. /**求和的方法**/
    9. public static int add(int n1, int n2){
    10. int sum = n1 + n2;
    11. return sum;
    12. }
    13. //方法名相同,参数类型不同,构成重载
    14. public static double add(double n1, int n2){
    15. double sum = n1 + n2;
    16. return sum;
    17. }
    18. //方法名相同,参数顺序不同,构成重载
    19. public static double add(int n1, double n2){
    20. double sum = n1 + n2;
    21. return sum;
    22. }
    23. //方法名相同,参数个数不同,构成重载
    24. public static double add(int n1, int n2, int n3){
    25. int sum = n1 + n2 + n3;
    26. int sum;
    27. }
    28. /*编译错误,只有返回值不同,不构成重载
    29. public static void add(int n1, double n2){
    30. double sum = n1 + n2;
    31. }
    32. */
    33. /*编译错误,只有形参名称不同,不构成重载
    34. public static double add(int m1, double m2){
    35. double sum = n1 + n2;
    36. return sum;
    37. }
    38. */
    39. }

    注意点

  • 重载的方法,实际是完全不同的方法,只是名称相同而已