Главная страница

АБОБА. Справочник по программированию на Java Методическое пособие


Скачать 242.41 Kb.
НазваниеСправочник по программированию на Java Методическое пособие
АнкорАБОБА
Дата20.02.2022
Размер242.41 Kb.
Формат файлаdocx
Имя файла12642_java_method_1.docx
ТипСправочник
#368066
страница33 из 67
1   ...   29   30   31   32   33   34   35   36   ...   67

Возвращение значения


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

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

class Box {

double width;

double height;

double depth;

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

double volume() {

return width * height * depth;

}

}

class BoxDemo4 {

public static void main(String args[]) {

Box mybox1 = new Box();

Box mybox2 = new Box();

double vol;

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

mybox1.width = 10;

mybox1.height = 20;

mybox1.depth = 15;

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

mybox2.width = 3;

mybox2.height = 6;

mybox2.depth = 9;

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

vol = mybox1.volume();

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

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

vol = mybox2.volume();

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

}

}

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

vol = mybox1.volume();

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

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

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

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

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

Добавление метода, принимающего параметры


Хотя некоторые методы не нуждаются в параметрах, большинство требует их передачи. Параметры позволяют обобщать метод. То есть метод с параметрами может работать с различными данными и/или применяться в ряде несколько различных ситуаций. В качестве иллюстрации рассмотрим очень простой пример. Ниже показан метод, который возвращает квадрат числа 10.

int square()

{

return 10 * 10;

}

Хотя этот метод действительно возвращает 102, его применение очень ограничено. Однако если его изменить так, чтобы он принимал параметр, как показано в следующем примере, метод square() может стать значительно более полезным.

int square(int i)

{

return i * i;

}

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

Приведем примеры:

int x, y;

x = square(5); // x равно 25

x = square(9); // x равно 81

y = 2;

x = square(y); // x равно 4

В первом обращении к методу square() значение 5 будет передано параметру i. Во втором обращении параметр i примет значение, равное 9. Третий вызов метода передает значение переменной y, которое в этом примере составляет 2. Как видно из этих примеров, метод square() способен возвращать квадрат любых переданных ему данных.

Важно различать два термина: параметр и аргумент. Параметр – это переменная, определенная методом, которая принимает значение при вызове метода. Например, в методе square() параметром является i. Аргумент – это значение, передаваемое методу при его вызове. Например, aquare(100) передает 100 в качестве аргумента. Внутри метода square() параметр i получает это значение.

Методом с параметрами можно воспользоваться для усовершенствования класса Box.

// Эта программа использует метод с параметрами.

class Box {

double width;

double height;

double depth;

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

double volume() {

return width * height * depth;

}

// установка размеров параллелепипеда

void setDim(double w, double h, double d) {

width = w;

height = h;

depth = d;

}

}

class BoxDemo5 {

public static void main(String args[]) {

Box mybox1 = new Box();

Box mybox2 = new Box();

double vol;

// инициализация каждого экземпляра Box

mybox1.setDim(10, 20, 15);

mybox2.setDim(3, 6, 9);

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

vol = mybox1.volume();

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

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

vol = mybox2.volume();

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

}

}

Как видите, метод setDim() использован для установки размеров каждого параллелепипеда. Например, при выполнении такого оператора:

mybox1.setDim(10, 20, 15);

, значение 10 копируется в параметр w, 20 – в h и 15 – в d. Затем внутри метода setDim() значения w, h и d присваиваются соответственно переменным width, height и depth.
1   ...   29   30   31   32   33   34   35   36   ...   67


написать администратору сайта