Помощь с перегруженными методами - PullRequest
1 голос
/ 24 февраля 2010

Я создал класс с именем Times, и мне нужно создать 4 перегруженных метода. Мне просто нужна помощь в понимании перегруженных методов и, по крайней мере, возможно, помощь в первом. Я был бы очень признателен. Спасибо:)

  • умножить 2 целых числа и вернуть (целое) произведение
  • умножить 3 целых числа и вернуть (целое) произведение
  • умножьте 2 двойных значения и верните (двойное) произведение
  • умножьте 3 двойных значения и верните (двойное) произведение

Ответы [ 4 ]

3 голосов
/ 24 февраля 2010

как это?

public class Times {
    public static int multiply(int a, int b) {
        return a * b;
    }

    public static int multiply(int a, int b, in c) {
        return multiply(a, b) * c;
    }

    public static double multiply(double a, double b) {
        return a * b;
    }

    public static double multiply(double a, double b) {
        return multiply(a, b) * c;
    }
}
2 голосов
/ 24 февраля 2010

«Перегруженные методы» означают, что все методы будут иметь одинаковые имена (и находиться в одном классе). Однако параметры должны быть разными по количеству или типу.

Так как все умножаются, «умножение» имеет смысл как имя.

Первый:

умножьте 2 целых числа и верните (целое число) произведение

Таким образом, он возвращает целое число (целое число), называется «multiply», принимает в качестве параметров 2 дюйма, что дает нам:

int multiply(int a, int b) {

Возвращает товар, поэтому тело:

    return a * b;

И затем мы закончили с этим:

}

Это дает нам:

int multiply(int a, int b) {
    return a * b;
}

Используйте тот же подход и то же имя для других.

1 голос
/ 24 февраля 2010

это будет выглядеть примерно так:


public class Times {
    public int mult(int a, int b) {
        return a*b;
    }
    public int mult(int a, int b, int c) {
        return a*b*c;
    }
    //2 more overloaded versions to come here
}

что касается понимания того, что они означают - когда ваш код компилируется, компилятор определяет, какой из методов (все они называются одинаковыми), использовать, просматривая аргументы.

так, например, что-то вроде этого


int a = 1;
int b = 1;
Times t = new Times();
t.mult(a,b);

компилятор выберет 1-й из 2-х методов, которые я продемонстрировал, для этого:


int a = 1;
int b = 1;
int c = 2;
Times t = new Times();
t.mult(a,b,c);

выберет 2-е (в зависимости от количества аргументов)

0 голосов
/ 24 февраля 2010

Вы можете сделать что-то вроде этого

public class Times {    
public static void main(String[] args) {
    System.out.println(multiplyInt(1,2));
    System.out.println(multiplyDoubles(2.0,3.0));
}

public static int multiplyInt(int... numbers){
    int multiply = 1;
    for(int number : numbers ){
        multiply = multiply*number;
    }
    return multiply;
}

public static double multiplyDoubles(double... numbers){
    double multiply = 1;
    for(double number : numbers ){
        multiply = multiply*number;
    }
    return multiply;
}

}

...