|
Spec-Zone .ru
спецификации, руководства, описания, API
|
Метод возвращается к коду, который вызвал его когда он
return оператор, иликакой бы ни происходит сначала.
Вы объявляете, что возврат метода вводит свое объявление метода. В пределах тела метода Вы используете 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
Теперь предположите, что Вам объявили, что метод возвращает a Number:
public Number returnANumber() {
...
}
returnANumber метод может возвратиться ImaginaryNumber но не Object. ImaginaryNumber a Number потому что это - подкласс Number. Однако, Object не обязательно a Number — это мог быть a String или другой тип.
Можно переопределить метод и определить его, чтобы возвратить подкласс исходного метода, как это:
public ImaginaryNumber returnANumber() {
...
}
Этот метод, названный ковариантным типом возврата, означает, что типу возврата позволяют измениться по тому же самому направлению как подкласс.