Объекты взаимодействуют путем передачи сообщений. Это значит, что объект может быть сконструирован так, чтобы демонстрировать определенное поведение как результат вызова соответствующей операции объекта. В Java это выполняется путем вызова метода объекта при помощи бинарного встроенного оператора точка .
. Вызов метода расшифровывает полное сообщение: объект-получатель сообщения, вызываемый метод и аргументы метода, если необходимо. Вызываемый метод получателя может также вернуть информацию отправителю через возвращаемое значение. Вызываемый метод должен быть одним из методов, определенных для объекта.
// Создание стека
CharStack stack = new CharStack(10);
stack.push('J'); // (1) Символ 'J' помещается в стек
char с = stack.pop(); // (2) Достаем и возвращаем символ 'J'
stack. printStackElements(); // (3)
// Ошибка компиляции: нет такого метода в `CharStack`
Вышеприведенный фрагмент кода вызывает методы объекта, обозначенного ссылочной переменной stack
. Вызов метода в строке (1) помещает один символ в стек, а метод в строке (2) достает один символ из стека. Оба метода, push()
и pop()
, определены в классе CharStack
. Метод push()
не возвращает никакого значения, а метод pop()
возвращает изъятый символ. Попытка вызова метода printStackElements()
объекта стека приводит к ошибке компиляции, так как в классе CharStack
такой метод не определен.
Оператор точка .
также может использоваться со ссылкой для доступа к полям объекта. Использование обозначения точки регулируется доступностью членов. Так, поля класса CharStack
имеют уровень доступа private
, который показывает, что они недоступны извне класса.
stack.topOfStack++; // Ошибка компиляции, т.к.
// topOfStack — это private-поле
Объектные ссылки | Статические члены |