Java方法

70 阅读4分钟

1. 方法的定义

每种编程语言都有方法的概念,方法也称函数,过程
方法(method):一段执行特定任务的代码块(用于封装一段特定的业务逻辑功能)
  通常是一个独立的业务功能,一个方法一个功能
  ▶ 封装可重复使用的功能,并通过调用来实现代码的模块化和组织结构(方法可以反复调用,减少代码的重复性,有利于代码维护)     

方法定义的语法格式:     修饰符 返回类型 方法名(参数列表) {         // 方法体         // 执行的代码         // 可能包含返回语句       }
修饰符(Modifiers):(可选)控制方法的访问级别和行为(修饰符有public、private、protected等) 返回类型(Return Type):方法执行完成后返回的数据类型(基本类型(如int、double等)或引用类型(如String、Object等)) 方法名(Method Name):方法的名称(标识方法,并在调用时使用) 参数列表(Parameter List):方法接受的输入参数(零个或多个,多个用逗号分隔),参数(参数类型和参数名称)组成 方法体(Method Body):花括号{}内的代码块(包含实际要执行的操作和逻辑) 返回语句(Return Statement):有返回类型的方法,在方法体中使用return语句返回一个相同类型值

  • 方法的定义
public class MyClass {
    public static void main(String[] args) {
        // 调用自定义方法
        greet("Alice");
    }

    // 自定义方法 greet,接收一个参数 name,返回类型为 void(不返回值)
    public static void greet(String name) {
        System.out.println("Hello, " + name + "!");
    }
}

2. 方法的调用

package bases;

public class Demo06_Function {
    public static void main(String[] args) {
        // 方法的调用
        // 无参
        sayHi();
        // 有参
        sayHello("Java");
    }

    // 无参无返回值=======================================================================================================
    public static void sayHi(){
        System.out.println("你好!Java");
        // 嵌套
        sayHello("java and I");
    }

    // 有参无返回值=======================================================================================================
    public static void sayHello(String name){
        System.out.println("你好啊" + name);
    }
}

在这里插入图片描述

3. 方法的分类

带参方法:接收零个或多个参数的方法,(传递数据给方法),public void printName(String name)
方法重载:允许在一个类中定义具有相同名称但参数列表不同的多个方法,public void add(int a, int b)和public void add(double a, double b)
实例方法(Instance Methods):位于类中,需要创建类的实例来调用,toString()、equals()等
静态方法(Static Methods):位于类中,使用类名直接调用,无需创建类的实例(不能访问实例的成员变量,只能访问静态成员变量),Math类中的sin()、cos()等
构造方法(Constructor Methods):位于类中,创建类的实例(名称必须与类名相同,没有返回类型),public MyClass()
抽象方法(Abstract Methods):只有声明(必须在抽象类或接口中声明),没有具体实现的方法(在子类中进行具体实现在子类中进行具体实现),public abstract void run()
  • 各种方法的定义及调用
package bases;

public class Demo06_Function {
    public static void main(String[] args) {
       // (非静态方法)实例方法,调用时使用类名实例化调用
        Person person = new Person();
        person.setName("Tom");
        System.out.println(person.getName());

        // 静态方法:使用类名直接调用
        int result = Calculator.add(3, 5);
        System.out.println("静态方法(求两个数的和):" + result);


        // 构造方法:创建类的实例调用
        Persons persons = new Persons("Tom");
        System.out.println(persons.getName());
    }
    // 实例方法(位于类中)=================================================================================================
    public static class Person {
        private String name;
        public void setName(String newName) {
            this.name = newName;
        }

        public String getName() {
            return this.name;
        }
    }

    // 静态方法(位于类中)=================================================================================================
    public class Calculator {
        private static int add(int a, int b) {
            return a + b;
        }
    }

    // 构造方法(位于类中)=================================================================================================
    public static class Persons {
        // 创建类的实例的特殊方法
        private String name;
        public Persons(String newName) {
            this.name = newName;
        }

        public String getName() {
            return this.name;
        }
    }
}
  • 抽象类的定义及调用
package bases;

public class Demo06_Function {
    public void main(String[] args) {
     // 抽象方法:必须在抽象类或者接口中
     Animal dog = new Dog();
     dog.makeSound();
    } 
    // 抽象方法(必须在抽象类或接口中声明)====================================================================================
    public abstract class Animal {
        // 只有声明,没有具体的实现方法
        public abstract void makeSound();
    }

    public class Dog extends Animal {
        // 在子类中进行具体实现
        @Override
        public void makeSound() {
            System.out.println("Woof!");
        }
    }
}

4. 方法重载

方法重载:在同一个类中定义多个具有相同名称但参数列表不同的方法(方法名必须相同,参数列表必须不同)
    方法名必须相同
    参数列表必须不同,即参数类型、参数个数或参数顺序
    返回类型可以相同也可以不同,但不能仅通过返回类型区分方法重载
    访问修饰符和异常声明可以相同也可以不同

在这里插入图片描述

签名:==方法名 + 参数列表== java:==在同一个类中,不允许出现签名完全相同的方法== 绑定:编译器在编译时会根据方法的签名自动绑定方法

  • 方法重载
public class Calculator {
    public int add(int a, int b) {
        return a + b;
    }

    public double add(double a, double b) {
        return a + b;
    }

    public int add(int a, int b, int c) {
        return a + b + c;
    }

    public String add(String str1, String str2) {
        return str1 + str2;
    }
}

// 调用示例
Calculator calculator = new Calculator();
int sum1 = calculator.add(3, 5);  // 调用第一个add方法
double sum2 = calculator.add(1.5, 2.5);  // 调用第二个add方法
int sum3 = calculator.add(1, 2, 3);  // 调用第三个add方法
String result = calculator.add("Hello", " World");  // 调用第四个add方法