Главная » Java » Вызов метода Java посредством задания ссылки на объект класса

0

Методы вызываются посредством задания ссылки на объект класса (скажем, reference) и наименования метода со списком аргументов (method(arguments)). Ссылка на объект и наименование метода объекта разделяются оператором точки (.):

reference.method(arguments);

В примере класса BodyPrint мы обращались к методу println, используя статическую ссылку System.out и передавая в качестве аргумента объект типа String, сформированный с помощью оператора сцепления (+) из нескольких :строковых операндов.

Каждый метод объявляется с указанием конкретного числа параметров простых или объектных типов. Java не допускает объявления методов с переменным числом параметров, хотя подобное ограничение вполне преодолимо – достаточно передать методу в качестве аргумента массив объектов. При обращении ‘к методу вызывающий код обязан предоставить набор аргументов, по количеству !и типам соответствующих списку параметров в объявлении метода.

В объявлении метода необходимо задавать наименование типа (простого или объектного) возвращаемого значения. Если семантика метода такова, что он не должен возвращать каких бы то ни было значений, вместо имени типа возвращаемого значения указывается служебное слово void.

Пример Bodyprint иллюстрирует типичную ситуацию, связанную с проверкой состояния объекта класса. Однако более предпочтительным следует считать решение, в котором вместо прямого обращения к полям объекта в классе предусмотрен некоторый метод, который способен возвратить строковое представление состояния. Ниже представлен метод в составе класса Body, возвращающий объект типа String, который описывает совокупность требуемых полей конкpeтнoгo экземпляра Body.

 

public String toString() {

       String desc = idNum + " (" + name + ")";

       if (orbits != null)

                  desc += " вращается вокруг" + orbits.toString();

       return desc;

}

 

Операторы + и +=, используемые в тексте метода, выполняют функции сцепления (конкатенации) строк. Сначала создается строка desc, содержащая номер небесного тела и его наименование. Если тело является спутником другого тела, в desc добавляется текстовое описание тела более высокого уровня, получаемое с помощью того же метода toString. Подобный рекурсивный процесс повторяется несколько раз, если иерархия небесных тел сложна (например, Луна-3емля-Солнце) - где каждое предыдущее тело служит спутником следующего, – и завершается по достижении "самого" центрального тела системы, когда поле огbits соответствующего объекта класса Body содержит значение null.

Наконец, с помощью команды return строка desc возвращается в то место кода, откуда был осуществлен вызов метода.

Метод toString объекта имеет специальное назначение – он вызывается для получения строкового представления состояния объекта в тех ситуациях, когда в выражениях конкатенации присутствует ссылка на сам объект. Рассмотрим следующие выражения:

sуstеm.оut.ргiпtlп("тело " + sun);

sуstеm.оut.ргiпtlп("тело " + earth);

Методы toString объектов sun и earth будут вызваны неявно и обеспечат вывод на экран следующих результатов:

тело 0 (солнце)

тело 1 (Земля) вращается вокруг О (Солнце)

Метод toString заведомо присутствует в составе любого объекта, независимо от того, был ли он (метод) объявлен в соответствующем классе или нет, поскольку все классы Java наследуют класс object, а в нем метод toString предусмотрен заранее. Класс object и вопросы наследования классов рассмотрены В главе 3.

 

Источник: Арнолд, Кен, Гослинг, Джеймс, Холмс, Дэвид. Язык программирования Java. 3-е изд .. : Пер. с англ. – М. : Издательский дом «Вильяме», 2001. – 624 с. : ил. – Парал. тит. англ.

По теме:

  • Комментарии