Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
готовые шпоры по java.docx
Скачиваний:
1
Добавлен:
01.03.2025
Размер:
78.07 Кб
Скачать

5. Методы класса. Перегрузка методов. Правила передачи параметров различных типов. Метод main().

Метод – основной элемент структурирования хода. Все функции Java объявляются только внутри классов и называются методами. Простейшее определение метода имеет вид: returnType methodName(список_параметров) {

// тело метода return value; // если нужен возврат значения (returnType не void) } Если метод не возвращает значение, ключевое слово return может отсутствовать, тип возвращаемого значения в этом случае будет void. Вместо пустого списка параметров метода тип void не указывается, а только пустые скобки. Вызов методов осуществляется из объекта или класса (для статических методов): objectName.methodName(); Методы-конструкторы по имени вызываются автоматически только при

создании объекта класса с помощью оператора new. Для того чтобы создать метод, нужно внутри объявления класса написать объявление метода и затем реализовать его тело. Объявление метода как минимум должно содержать тип возвращаемого значения (возможен void) и имя метода.

В приведенном ниже объявлении метода элементы, заключенные в квадратные скобки, являются необязательными. [доступ] [static] [abstract] [final] [native] [synchronized] returnType methodName(список_параметров) [throws список_исключений] Как и для полей класса, спецификатор доступа к методам может быть public, private, protected и по умолчанию. При этом методы суперкласса можно перегружать или переопределять в порожденном подклассе. Объявленные в методе переменные являются локальными переменными

метода, а не членами классов, и не инициализируются значениями по умолчанию при создании объекта класса или вызове метода.

Метод называется перегруженным, если существует несколько его версий с одним и тем же именем, но с различным списком параметров. Перегрузка может ограничиваться одним классом. Методы с одинаковыми именами, но с различающимися списком параметров и возвращаемыми значениями могут находиться в разных классах одной цепочки наследования и также будут являться перегруженными. Если в последнем случае списки параметров совпадают, то имеет место другой механизм – переопределение метода. Статические методы могут перегружаться нестатическими и наоборот – без

ограничений. При вызове перегруженных методов следует избегать ситуаций, когда компилятор будет не в состоянии выбрать тот или иной метод. Параметризованный (generic) метод определяет базовый набор операций,

которые будут применяться к разным типам данных, получаемых методом в качестве параметра, и может быть записан, например, в виде: <T extends Тип> returnType methodName(T arg) {} <T> returnType methodName(T arg) {}

Описание типа должно находиться перед возвращаемым типом. При запуске программы на Java система находит и запускает метод main этого класса. Метод main должен быть объявлен как public, static и void (то есть не возвращающий никакого значения), и ему должен передаваться один аргумент типа String[].Приложение может содержать несколько методов main. Тем не менее в каждой программе используется всего один метод main, указываемый при запуске. Присутствие нескольких методов main имеет положительный эффект — каждый класс может иметь метод main, предназначенный для проверки его собственного кода, что дает превосходную возможность для модульного тестирования класса.

6. Преобразование типов. Явное и неявное преобразование типов, виды преобразования. Java относится к языкам с сильной типизацией — это означает, что во время компиляции практически всегда осуществляется проверка на совместимость типов. Неявное приведение типов. Некоторые приведения типов происходят автоматически. Существует две категории неявных приведений. Первая категория неявных приведений типа относится к примитивным значениям. Числовой переменной можно присвоить любое числовое значение, входящее в допустимый диапазон данного типа. Тип char может использоваться всюду, где допускается использование int. Значение с плавающей точкой может быть присвоено любой переменной с плавающей точкой, имеющей ту же или большую точность.Java также поддерживает неявные приведения целых типов в типы с плавающей точкой, но не наоборот — при таком переходе не происходит потери значимости, так как диапазон значений с плавающей точкой шире, чем у любого из целых типов. Второй тип неявного приведения — приведение по ссылке. Объект, относящийся к некоторому классу, включает экземпляры каждого из супертипов. Вы можете использовать ссылку на объект типа в тех местах, где требуется ссылка на любой из его супертипов. Значение null может быть присвоено ссылке на объект любого типа, в том числе и ссылке на массив. Явное приведение и instanceof. Когда значение одного типа не может быть присвоено переменной другого типа посредством неявного приведения, довольно часто можно воспользоваться явным приведением типов (cast). Явное приведение требует, чтобы новое значение нового типа как можно лучше соответствовало старому значению старого типа. Явное приведение типов может применяться и к объектам. Хотя объект расширенного типа разрешается использовать вместо объекта супертипа, обратное, вообще говоря, неверно. Строковое приведение.Класс String отличается от остальных: это неявно используется в операторе конкатенации +, а строковые литералы ссылаются на объекты String. Примеры нам уже встречались в программах: при выполнении конкатенации Java пытается преобразовать в String все, что еще не относится к этому типу. Подобные приведения определены для всех примитивных типов и осуществляются вызовом метода toString объекта. Если преобразовать в String пустую ссылку, то результатом будет строка “null”. Если для данного класса метод toString не определен, то используется метод, унаследованный от класса Object и возвращающий строковое представление типа объекта.