Spec-Zone .ru
спецификации, руководства, описания, API
След: Изучение Языка Java
Урок: Классы и Объекты
Раздел: Больше на Классах
Возврат Значения от Метода
Домашняя страница > Изучение Языка Java > Классы и Объекты

Возврат Значения от Метода

Метод возвращается к коду, который вызвал его когда он

какой бы ни происходит сначала.

Вы объявляете, что возврат метода вводит свое объявление метода. В пределах тела метода Вы используете return оператор, чтобы возвратить значение.

Любой метод объявляется void не возвращает значение. Это не должно содержать a return оператор, но это может сделать так. В таком случае, a return оператор может использоваться, чтобы перейти из потока управления, блокируют и выходят из метода, и просто используется как это:

return;

Если Вы пытаетесь возвратить значение из метода, который объявляется void, Вы получите ошибку компилятора.

Любой метод, который не объявляется void должен содержать a return оператор с соответствующим возвращаемым значением, как это:

return returnValue;

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

getArea() метод в Rectangle Rectangle class, который был обсужден в разделах по объектам, возвращает целое число:

    // a method for computing the area of the rectangle
    public int getArea() {
        return width * height;
    }

Этот метод возвращает целое число что выражение width*height оценивает к.

getArea метод возвращает тип примитива. Метод может также возвратить ссылочный тип. Например, в программе, чтобы управлять Bicycle объекты, у нас мог бы быть метод как это:

public Bicycle seeWhosFastest(Bicycle myBike, Bicycle yourBike,
                              Environment env) {
    Bicycle fastest;
    // code to calculate which bike is 
    // faster, given each bike's gear 
    // and cadence and given the 
    // environment (terrain and wind)
    return fastest;
}

Возврат Класса или Интерфейса

Если этот раздел смущает Вас, пропустите его и возвратитесь к нему после того, как Вы закончили урок в интерфейсах и наследовании.

Когда метод использует имя class в качестве своего типа возврата, такой как whosFastest делает, class типа возвращенного объекта должен быть или подклассом, или точным class, тип возврата. Предположите, что у Вас есть иерархия class в который ImaginaryNumber подкласс java.lang.Number, который является поочередно подклассом Object, как иллюстрировано в следующем числе.

Иерархия class для ImaginaryNumber

Иерархия class для ImaginaryNumber

Теперь предположите, что Вам объявили, что метод возвращает a Number:

public Number returnANumber() {
    ...
}

returnANumber метод может возвратиться ImaginaryNumber но не Object. ImaginaryNumber a Number потому что это - подкласс Number. Однако, Object не обязательно a Number — это мог быть a String или другой тип.

Можно переопределить метод и определить его, чтобы возвратить подкласс исходного метода, как это:

public ImaginaryNumber returnANumber() {
    ...
}

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


Отметьте: также можно использовать имена интерфейса в качестве типов возврата. В этом случае возвращенный объект должен реализовать указанный интерфейс.

Проблемы с примерами? Попытайтесь Компилировать и Выполнить Примеры: FAQ.
Жалобы? Поздравление? Предложения? Дайте нам свою обратную связь.

Предыдущая страница: Больше на Классах
Следующая страница: Используя это Ключевое слово