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() { ... }
Этот метод, названный ковариантным типом возврата, означает, что типу возврата позволяют измениться по тому же самому направлению как подкласс.