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


Листинг 6.2 Пример класса, содержащего только методы

// Описание пользовательского класса

class MyClass {

// Описание метода, выполняющего сложение

int summ (int a, int b) {

int summa=a+b;

return summa;

}

// Описание метода, выполняющего умножение

int proiz (int a, int b) {

int proizvedenie=a*b;

return proizvedenie;

}

}

public class Listing6_2 {


public static void main (String [] args) {

// Создаем объект класса MyClass

MyClass test=new MyClass ();

// Вызов метода, выполняющего сложение

System.out.println («Сумма чисел 4+5="+test.summ (4,5));

// Вызов метода, выполняющего умножение

System.out.println («Произведение чисел 5*6="+test.proiz (5,6));

}

}

В примере из листинга 6.2 мы описали класс, который содержит два метода: сложение двух целых чисел и умножение двух целых чисел. В методах используются локальные переменные a и b, которые существуют только во время выполнения блока команд метода.

В главном методе программы мы создаем объект класса и присваиваем ссылку на него объектной переменной test. Чтобы вызвать метод и передать ему аргументы, мы используем конструкцию вида объект. метод (аргументы). Мы можем создать сколько угодно много объектов одного класса, поэтому при вызове метода необходимо сначала указать, какой именно объект мы имеем в виду, и затем через точку указать имя метода.

Для упрощения программы вызов метода располагается непосредственно в команде вывода строки на печать.

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


Листинг 6.3 Пример класса с полями и методами

import javax.swing.JOptionPane;


class MyClass {

// Поля класса

int fieldOne;

int fieldTwo;

// Метод для присваивания значений полям

void set (int a, int b) {

fieldOne = a;

fieldTwo = b;

}

// Метод для перемножения значений полей

int multiply () {

return fieldOne*fieldTwo;

}

// Метод для суммирования значений полей

int summ () {

return fieldOne+fieldTwo;

}

}

public class Listing6_3 {


public static void main (String [] args) {

// Объявляем переменные главного класса

int input1, input2;

String inputString;


// Создаем объект своего класса

MyClass obj=new MyClass ();


// Окно ввода первого значения

inputString=JOptionPane.showInputDialog («Введите первое значение»);

input1 = Integer.parseInt (inputString);


// Окно ввода второго значения

inputString=JOptionPane.showInputDialog («Введите второе значение»);

input2 = Integer.parseInt (inputString);


// Вызываем метод для присвоения значений полям объекта

obj.set (input1, input2);


// Выводим в диалоговое окно результат сложения

JOptionPane.showMessageDialog (null,«Результат сложения: "+obj.summ ());

// Выводим в диалоговое окно результат умножения

JOptionPane.showMessageDialog (null,«Результат умножения: "+obj.multiply ());

}

}

В примере из листинга 6.3 поля класса и метод для присвоения значений этим полям использованы в качестве иллюстрации. В данном примере мы могли бы передавать значения в методы сложения и умножения напрямую, через аргументы вызова. Но на практике в языке Java принято использовать специально написанные методы. Почему?