Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Программирование на Java.docx
Скачиваний:
2
Добавлен:
01.05.2025
Размер:
3.45 Mб
Скачать

Тема 2.7 Возвращение значения из метода

Хотя реализация метода volume () переносит вычисление объема параллелепипеда внутрь класса Box, которому принадлежит этот метод, такой способ вычисления не является наилучшим. Например, что делать, если другой часть программы требуется знание объема параллелепипеда без его отображения? Более рациональный способ реализации метода volume () – вычисление объема параллелепипеда и возврат результата вызывающему объекту. Программа из листинга 2.5 – усовершенствованная версия предыдущей программы – выполняет именно эту задачу.

Листинг 2.5

// Теперь метод volume() возвращает объем параллелепипеда.

public class Box {

public double width;

public double height;

public double depth;

// вычисление и возвращение объема

public double volume() {

return width * height * depth;

}

}

public class BoxDemo4 {

public static void main(String args[]) {

Box myboxl = new Box();

Box mybox2 = new Box();

double vol;

// присваивание значений переменным экземпляра myboxl

myboxl.width = 10;

myboxl.height = 20;

myboxl.depth = 15;

// присваивание других значений переменным экземпляра mybox2

mybox2.width = 3;

mybox2.height = 6;

mybox2.depth = 9;

// получение объема первого параллелепипеда vol = myboxl.volume();

vol = myboxl.volume();

System.out.println("Объем равен " + vol);

// получение объема второго параллелепипеда

vol = mybox2.volume();

System.out.println("Объем равен " + vol);

}

}

Как видите, вызов метода volume () выполняется в правой части оператора присваивания. Правой частью этого оператора является переменная, в данном случае vol, которая будет принимать значение, возвращенное методом volume (). Таким образом, после выполнения такого оператора:

vol = myboxl .volume () ;

значение myboxl .volume () равно 3000, и этот объем сохраняется в переменной vol.

При работе с возвращаемыми значениями следует учитывать два важных обстоятельства.

1). Тип данных, возвращаемых методом, должен быть совместим с возвращаемым типом, указанным методом. Например, если возвращаемым типом какого-либо метода является boolean, нельзя возвращать целочисленное значение.

2). Переменная, принимающая возвращенное методом значение (такая как vol в данном случае), также должна быть совместима с возвращаемым типом, указанным для метода.

Предыдущую программу можно было бы записать в несколько более эффективной форме, поскольку в действительности переменная vol совершенно не нужна. Обращение к методу volume () можно было бы использовать в операторе println () непосредственно, как в следующей строке кода:

System.out.println("Объем равен " + myboxl.volume());

В этом случае при выполнении оператора println() метод myboxl.volume() будет вызываться автоматически, а возвращаемое им значение будет передаваться методу println ().

Задание:

Измените в нашем классе Figure метод вычисляющий периметр прямоугольника так, чтобы возвращаемый тип был double.