【Java教程】方法、函数、方法重载、构造方法、可变参数、桥接方法

1. 方法

  • 类拥有的代码块,具有独立功能。
  • 调用时,在栈中创建独立空间,执行完毕后释放。
  • 方法签名:方法名+参数列表。

1.1语法

// 声明方法:
修饰符 返回值类型 方法名(参数列表) {   // 统称方法头
    // 方法体
}

// 示例:
void 方法名(参数类型... 形参名) { // 可变参数
    // ...
}
  • 参数数量可以为0或多个。
  • 调用方法的方式:
    • 无参:方法名();
    • 有参:方法名(参数);
    • 接收返回值:数据类型 变量名 = 方法名(参数);

1.2函数

  • 方法必须属于某个类,函数可以不属于。
  • Java仅有方法,C仅有函数,C++和Python取决于是否在类中。

1.3注意事项

  1. 返回值:
    • 定义方法时需明确返回值类型,无返回值用void
    • return会立即结束方法,且只能有一个返回值。
    • void类型可省略return或单独用来结束方法体。
  2. 参数:
    • 方法定义时,参数类型与变量名要成对出现,多参数间用逗号分隔。
    • 形式参数:方法定义中的参数。如:void setAge(int number)
    • 实际参数:调用方法时的参数。如:setAge(10)
    • 实参类型影响传递方式:基本类型传值,引用类型传地址。
  3. 方法结束方式:
    • 正常结束:遇到返回字节码指令,可能返回值。
    • 异常结束:遇到未处理异常,不返回值。

2 方法重载

  • 同类中多个同名但参数不同的方法。

2.1注意

  • 编译时多态性:编译阶段确定调用方法。
  • 方法重写是运行时多态性。

2.2示例

public class MethodDemo {
    public static void fn(int a) { /* ... */ }
    public static int fn(double a) { /* 参数类型不同 */ }
    public static int fn(int a, int b) { /* 参数个数不同 */ }
}

3 构造方法

  • 初始化对象的特殊方法。
  • 创建对象时自动调用,也可接受参数以定制对象。
  • 类中若无构造方法,编译器提供默认无参构造方法。

3.1格式

  • 方法名与类名相同。
  • 无返回值类型,可重载。

3.2示例

public class Student {
    public Student() {
        // 无参构造方法
    }
    public Student(String name, int age) {
        this.name = name;
        this.age = age;
        // 有参构造方法
    }
}

4 可变参数

  • 使用省略号...表示接受任意数量参数。
  • 参数被封装为数组,通过数组对象访问。
  • 一个方法中只能有一个可变参数,且需放在最后。

4.1使用格式

/**方法的doc文档**/
返回值类型 方法名(参数类型... 形参名) { }

5. 桥接方法(Bridge Method)

  • Java编译器生成的方法,用于泛型和类型擦除。
  • 不直接出现在代码中,但存在于字节码中。

5.1意义

  • 使用Java反射API中getMethods()时可见。
  • Method类的isBridge()判断是否为桥接方法。

5.2示例

背景:

	public class Parent<T> {
	    public T doSomething(T param) {
	        return param;
	    }
	}
	
	public class Child extends Parent<String> {
	    @Override
	    public String doSomething(String param) {
	        return param;
	    }
	}

class 中会在 Child 中生成:

	public Object doSomething(Object param) {
	    return doSomething((String) param);
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值