在Java中重载方法

时间:2015-02-15 20:56:43

标签: java overloading

必须满足哪些条件才能使两种方法正确地成为重载方法?

两个方法的参数列表中至少必须有不同之处,例如

public void A() { //... }
public void A(int val) { //.. } 

因此,仅仅改变返回类型和/或访问修饰符不会产生两个重载方法?

4 个答案:

答案 0 :(得分:2)

这些规则绝非任意:说你有

String a() {}
Date a() {}

你怎么称呼?我们来看看:

Object o = a(); // which a() is called?

仅通过访问修饰符区别的方法更不会有意义:它们是相同方法的两个副本,但具有不同的行为。

因此,实际规则将方法签名定义为由在每个调用站点处修复的那些部分组成:名称和参数类型。一个类可能没有两个具有相同签名的方法。

答案 1 :(得分:2)

你是对的。返回类型和访问修饰符不是方法重载的限定因素。传递的参数,即参数的类型,传递的参数的数量或两者兼而有之,使得方法被重载的条件是什么。

答案 2 :(得分:1)

你是对的兄弟,更改访问修饰符和返回类型不会使方法重载。关键是具有相同名称和不同签名(参数)的方法被称为重载。这是使方法重载的充分条件。

答案 3 :(得分:-1)

唯一的规则是重载方法必须具有与JVM角度相同的名称和不同的参数类型,例如你不能有以下两种方法:

public int methodA(int... array);
public void methodA(int[] array);

在可见性修饰符或返回类型上无关紧要。