详细对比 Java、Python、C# 和 C++ 在函数定义语法上的主要区别:
1. Java 函数定义
            
            
              java
              
              
            
          
          // 基本语法
[访问修饰符] [static] [final] 返回类型 函数名(参数列表) {
    // 函数体
    return 返回值;
}
// 示例
public static int add(int a, int b) {
    return a + b;
}
private void printMessage(String message) {
    System.out.println(message);
}
// 没有返回值的函数
public void doSomething() {
    // 不需要 return 语句,或使用 return;
}
        特点:
- 必须指定返回类型(void 表示无返回值)
 - 参数需要明确类型
 - 支持方法重载
 - 所有函数都是类的方法
 
2. Python 函数定义
            
            
              python
              
              
            
          
          # 基本语法
def 函数名(参数列表):
    """文档字符串"""
    # 函数体
    return 返回值
# 示例
def add(a, b):
    """返回两个数的和"""
    return a + b
def print_message(message):
    print(message)
    # 如果没有 return,默认返回 None
# 类型提示(可选)
def multiply(x: int, y: int) -> int:
    return x * y
# 默认参数
def greet(name, message="Hello"):
    return f"{message}, {name}!"
# 可变参数
def sum_all(*args):
    return sum(args)
        特点:
- 使用 
def关键字 - 动态类型,参数和返回值不需要声明类型
 - 支持可选的类型提示
 - 支持默认参数、可变参数
 - 通过缩进定义代码块
 
3. C# 函数定义
            
            
              csharp
              
              
            
          
          // 基本语法
[访问修饰符] [static] 返回类型 函数名(参数列表)
{
    // 函数体
    return 返回值;
}
// 示例
public static int Add(int a, int b)
{
    return a + b;
}
private void PrintMessage(string message)
{
    Console.WriteLine(message);
}
// 可选参数
public void Greet(string name, string message = "Hello")
{
    Console.WriteLine($"{message}, {name}!");
}
// 表达式体方法(C# 6.0+)
public int Multiply(int x, int y) => x * y;
        特点:
- 语法与 Java 类似但有关键字差异
 - 支持可选参数和命名参数
 - 支持表达式体方法
 - 使用 
=>简化单行函数 
4. C++ 函数定义
            
            
              cpp
              
              
            
          
          // 基本语法
返回类型 函数名(参数列表) {
    // 函数体
    return 返回值;
}
// 示例
int add(int a, int b) {
    return a + b;
}
void printMessage(std::string message) {
    std::cout << message << std::endl;
}
// 函数重载
int add(int a, int b, int c) {
    return a + b + c;
}
double add(double a, double b) {
    return a + b;
}
// 默认参数
void greet(std::string name, std::string message = "Hello") {
    std::cout << message << ", " << name << "!" << std::endl;
}
// 内联函数
inline int multiply(int x, int y) {
    return x * y;
}
        特点:
- 支持函数重载
 - 支持默认参数
 - 可以定义内联函数
 - 支持函数指针和 lambda 表达式
 
主要区别总结
| 特性 | Java | Python | C# | C++ | 
|---|---|---|---|---|
| 关键字 | 无特殊关键字 | def | 
无特殊关键字 | 无特殊关键字 | 
| 返回类型 | 必须声明 | 可选类型提示 | 必须声明 | 必须声明 | 
| 参数类型 | 必须声明 | 动态类型 | 必须声明 | 必须声明 | 
| 默认参数 | 不支持 | 支持 | 支持 | 支持 | 
| 函数重载 | 支持 | 不支持 | 支持 | 支持 | 
| 代码块 | 大括号 {} | 
缩进 | 大括号 {} | 
大括号 {} | 
| 独立函数 | 不支持(都是方法) | 支持 | 不支持(都是方法) | 支持 |