Looking for java Keywords? Try Ask4Keywords

Java Language Перегрузка метода


пример

Перегрузка метода , также известная как перегрузка функций , - это способность класса иметь несколько методов с тем же именем, если они отличаются друг от друга по количеству или типу аргументов.

Компилятор проверяет подпись метода для перегрузки метода.

Подпись метода состоит из трех вещей:

  1. Имя метода
  2. Количество параметров
  3. Типы параметров

Если эти три одинаковы для любых двух методов в классе, то компилятор выдает ошибку повторяющегося метода .

Этот тип полиморфизма называется статическим или компиляционным полиморфизмом, потому что соответствующий метод, который должен быть вызван, определяется компилятором во время компиляции на основе списка аргументов.

class Polymorph {

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

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

    public static void main(String... args){
        Polymorph poly = new Polymorph();
        int a = 1, b = 2, c = 3;
        float d = 1.5, e = 2.5;

        System.out.println(poly.add(a, b));
        System.out.println(poly.add(a, b, c));
        System.out.println(poly.add(d, e));
    }

}

Это приведет к:

2
6
4.000000

Перегруженные методы могут быть статическими или нестационарными. Это также не приводит к перегрузке метода.

public class Polymorph {

    private static void methodOverloaded()
    {
        //No argument, private static method
    }
 
    private int methodOverloaded(int i)
    {
        //One argument private non-static method
        return i;
    }
 
    static int methodOverloaded(double d)
    {
        //static Method
        return 0;
    }
 
    public void methodOverloaded(int i, double d)
    {
        //Public non-static Method
    }
}

Также, если вы измените тип возвращаемого метода, мы не сможем получить его как перегрузку метода.

public class Polymorph {  

void methodOverloaded(){
    //No argument and No return type
}

int methodOverloaded(){
    //No argument and int return type 
    return 0;
}