2016-03-22 3 views
0

Методы Java не требуют операторов возврата в соответствии с их параметрами. Зачем?Логика Java относительно методов, возвращающих значения и их параметры

Рассмотрим этот тривиальный метод, который принимает три параметра: x, y и z. Метод работает, когда используется только один возвращаемый параметр (т. Е. Return x, y или z). Почему Java не требует return x, y, z; или что-то в этом роде? Я начинающий Java, поэтому, возможно, я узнаю, почему, когда мы переходим к принципам ООП. Во всяком случае, мне любопытно, есть ли логика, или это просто Java. Благодарю.

public static int someNumbers(int x, int y, int z) { 

    if (y > z) { 
     System.out.printf("%d is greater than %d", y, z); 
    } else { 
     System.out.printf("Number three is %d", z); 
    } 
    return x; 
} 
+4

Параметры, что вы пристали к методу, возвращаемое значение является то, что вы выходите. Почему они должны совпадать? –

+0

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

+0

По этой логике должен ли метод, который не принимает никаких параметров, принудительно возвращать пустоту? Это будет баад. – ChiefTwoPencils

ответ

1

Parameters и Return types на самом деле не имеют никакого отношения друг к другу. Метод может иметь 0 или более параметров любого произвольного типа.

public int someMethod(int x, String y, Object z) { 
    //Does something 
    return x * 5 - 10; 
} 

Но может иметь только 0 или 1 возвращаемые значения. Где 0 возвращаемые значения должны быть определены как пустоты:

public void someMethod(int x, String y, Object z) { 
    //Does something but returns nothing 
} 

При необходимости возвращать более 1 значения, такие как 2 Integers, вы можете создать Object проведения этих значений. Это своего рода то, что определяет Java как Object Oriented Language.

class IntegerHolder{ 
    int firstValue; 
    int secondValue; 

    //This is a constructor, it creates the object. 
    public IntegerHolder(int first, int second){ 
     firstValue = first; 
     secondValue = second; 
    } 
} 

public IntegerHolder someMethod(int x, String y, Object z) { 
    return new IntegerHolder(x, x * 2); 
} 

Я советую прочитать на некоторых основных Java однако. В Интернете есть сотни ресурсов.

1

Хорошо определенная функция может иметь только один выход. Это такая взаимосвязь между входом и выходом, что вы можете дать несколько входных данных, но она даст только один вывод.

Определение функции Java просто следуйте этому правилу. Вы можете использовать некоторые другие функции Java, чтобы получить более одного результата за раз. Но должен вернуться на выходе в соответствии с определением function.You можно также прочитать:

https://math.stackexchange.com/questions/271613/why-is-a-function-defined-as-having-only-one-y-value-output

Смежные вопросы