Содержание
- 1 Объявление и определение метода в Java
- 2 Как вызвать метод в Java
- 3 Вызов метода из другого класса
- 4 Перегрузка методов в Java
- 5 Ключевое слово this в методах Java
- 6 Абстрактные методы в Джаве
- 7 Объявление и определение метода в Java
- 8 Как вызвать метод в Java
- 9 Вызов метода из другого класса
- 10 Перегрузка методов в Java
- 11 Ключевое слово this в методах Java
- 12 Абстрактные методы в Джаве
Недавно я переключился с работы на PHP на Java и получил запрос. Хотите подчеркнуть, что я новичок в Java.
По сути, я работаю в файле A (с классом A) и хочу ссылаться на статический метод, сохраненный в файле B (класс B). Нужно ли ссылаться на файл B при работе с классом A? (Я думаю по строкам require_once в PHP). Мой код в классе A выглядит следующим образом:
Eclipse не распознает B как класс. Мне нужно создать экземпляр B для доступа к статическому методу. Почувствуйте, что я действительно что-то замечаю и буду признателен за любой вклад.
Убедитесь, что у вас есть правильный доступ к B.staticMethod. Возможно, объявите это как
Кроме того, вам необходимо импортировать класс B
Java имеет механизм загрузчика классов, который похож на автозагрузчик PHP. Это означает, что вам не нужно ничего, как функция include или require : до тех пор, пока классы, которые вы используете, находятся в "classpath", они будут найдены.
Некоторые люди скажут, что вам нужно использовать оператор import . Это неправда; import ничего не дает, но дает вам возможность ссылаться на классы с их короткими именами, так что вам не нужно каждый раз повторять имя пакета.
Например, код в программе, которая работает с классами ArrayList и Date может быть записана следующим образом:
Повторное использование имени пакета становится утомительным через некоторое время, поэтому мы можем использовать import чтобы сообщить компилятору, что мы хотим ссылаться на эти классы по их короткому имени:
В объектно-ориентированном программировании метод — это именованный блок кода, который объявляется внутри класса и может быть использован многократно. Если вы знакомы с процедурным программированием (Pascal, Basic), вспомните, что такое функция — по принципу работы у неё и метода много общего.
Хорошо написанный метод решает одну практическую задачу: находит квадратный корень из числа (как штатный метод sqrt() в Java), преобразует число в строку (метод toString()), присваивает значения полям объекта и так далее.
Новый метод сначала объявляют и определяют, затем вызывают для нужного объекта или класса.
Штатные — встроенные — методы языка работают со служебными объектами. Например, метод print в Java выводит значения в консоль. Вызывают его так:
Обратите внимание на структуру: у класса System есть поле out — поток ввода/вывода. Поле — тоже объект, и у него есть метод print(), который мы вызываем.
Ещё есть метод println(), который при выводе значений автоматически переводит каретку на следующую строку. Это избавляет от необходимости ставить «
» в месте переноса строки.
Чтобы Java-приложение могло работать, в его базовом классе обязательно нужно объявить метод main.
Как видите, в качестве параметра main принимает массив строк, в данном случае — параметров запуска.
Объявление и определение метода в Java
Методы могут возвращать или не возвращать значения, могут вызываться с указанием параметров или без. Тип возвращаемых данных указывают при объявлении метода — перед его именем.
В примере ниже метод должен найти большее из двух целых чисел, поэтому тип возвращаемого значения — int:
В заголовке метода сначала идут модификаторы, определяющие, на каких условиях он доступен для вызова. Об этом чуть ниже. Вернёмся к заголовку: int — возвращаемый тип, maxFinder — имя метода, в скобках — параметры.
В теле метода заводим переменную max, куда потом запишем большее число. Далее сравниваем значения, фиксируем большее в max и возвращаем.
Обратите внимание, return может работать не только с одной переменной, но и с выражением. Если бы мы не сравнивали значения, а складывали, результат можно было бы вернуть без дополнительной внутренней переменной. В теле метода была бы всего одна строка:
Когда метод не должен ничего возвращать, тип возвращаемого значения указывают как void. А если методу для работы не нужны входные параметры, скобки оставляют пустыми:
Как вызвать метод в Java
Метод с модификатором public можно вызывать из любого класса, в том числе размещенного во внешнем файле. Если нужно, чтобы метод был доступен исключительно внутри своего класса, применяют модификатор private. Есть и более мягкий вариант ограничения доступа: методы с модификатором protected доступны подклассам своего класса и другим классам из того же пакета. Чем сложнее получить доступ к методу извне, тем безопаснее — ниже риск ошибок.
Статический метод в Java принадлежит классу, а не объектам (и экземплярам) класса. Поэтому его вызывают без создания экземпляра.
Для простоты мы сделали методы публичными и статическими и разместили их в главном классе программы.
Вызывают методы двумя способами — в зависимости от того, возвращают они что-то или нет. Если да, подставляем значение, куда нам нужно:
Мы вызвали maxFinder и сразу вывели результат его работы на экран. Для примера числа заданы вручную, как неименованные константы, но в реальных приложениях обычно сравнивают значения переменных.
После вызова метод управляет программой до окончания своей работы: пока в его теле не сработает оператор возврата или прерывания, либо пока не будут выполнены все находящиеся в нём инструкции.
Вызовем theWarning, который ничего не возвращает:
Этот метод обходится без помощников — делает, что должен, и передаёт управление последующему коду.
Вызов метода из другого класса
А если бы maxFinder находился в отдельном классе и был не статическим? Тогда для его вызова пришлось бы сначала создать объект класса, в котором он находится. Допустим, метод находится в классе SampleClass. Вызываем:
Статический метод вызывают через точку от имени класса — вот так:
Перегрузка методов в Java
Что, если нам нужно сравнивать не только целые числа, но и числа с плавающей точкой? Реализовать это поможет перегрузка метода. Копипастим метод maxFinder в тот же класс, заменяем типы всех задействованных значений на double:
Имя метода не меняем! Это и есть перегрузка: компилятор сам выберет, какую из версий метода использовать — в зависимости от того, значения какого типа сравниваем.
Ключевое слово this в методах Java
Ключевое слово this позволяет ссылаться на экземпляры класса: их переменные, методы и конструкторы. Используют this только внутри метода или конструктора экземпляра. Например, вот так можно связать входные параметры метода с одноименными параметрами конкретного экземпляра класса:
Ещё пример — вызов одного конструктора из другого:
Это называется «явный вызов конструктора».
Абстрактные методы в Джаве
Абстрактным называют метод, который объявлен без реализации — он не имеет ни тела, ни даже фигурных скобок. Перед именем такого метода ставят модификатор abstract:
Зачем он такой нужен? В качестве шаблона для других методов из других классов. Вот есть у нас абстрактный класс «Строение», а в нём — абстрактный метод «возвести». Реализовывать эти абстракции нужно через несколько неабстрактных классов-наследников и их методы. Пример: класс «Хижина» — метод «стройХижину», класс «Мост» — метод «стройМост» и др.
Поскольку конкретной реализации у абстрактного класса нет, экземпляры его создавать нельзя. Он — шаблон, который задаёт структуру для других классов и содержит объявления методов.
Кроме этого, рекомендуем помотреть вебинар по введению в ООП на Java, где также будет рассматриваться работа с методами и конструкторами.
В объектно-ориентированном программировании метод — это именованный блок кода, который объявляется внутри класса и может быть использован многократно. Если вы знакомы с процедурным программированием (Pascal, Basic), вспомните, что такое функция — по принципу работы у неё и метода много общего.
Хорошо написанный метод решает одну практическую задачу: находит квадратный корень из числа (как штатный метод sqrt() в Java), преобразует число в строку (метод toString()), присваивает значения полям объекта и так далее.
Новый метод сначала объявляют и определяют, затем вызывают для нужного объекта или класса.
Штатные — встроенные — методы языка работают со служебными объектами. Например, метод print в Java выводит значения в консоль. Вызывают его так:
Обратите внимание на структуру: у класса System есть поле out — поток ввода/вывода. Поле — тоже объект, и у него есть метод print(), который мы вызываем.
Ещё есть метод println(), который при выводе значений автоматически переводит каретку на следующую строку. Это избавляет от необходимости ставить «
» в месте переноса строки.
Чтобы Java-приложение могло работать, в его базовом классе обязательно нужно объявить метод main.
Как видите, в качестве параметра main принимает массив строк, в данном случае — параметров запуска.
Объявление и определение метода в Java
Методы могут возвращать или не возвращать значения, могут вызываться с указанием параметров или без. Тип возвращаемых данных указывают при объявлении метода — перед его именем.
В примере ниже метод должен найти большее из двух целых чисел, поэтому тип возвращаемого значения — int:
В заголовке метода сначала идут модификаторы, определяющие, на каких условиях он доступен для вызова. Об этом чуть ниже. Вернёмся к заголовку: int — возвращаемый тип, maxFinder — имя метода, в скобках — параметры.
В теле метода заводим переменную max, куда потом запишем большее число. Далее сравниваем значения, фиксируем большее в max и возвращаем.
Обратите внимание, return может работать не только с одной переменной, но и с выражением. Если бы мы не сравнивали значения, а складывали, результат можно было бы вернуть без дополнительной внутренней переменной. В теле метода была бы всего одна строка:
Когда метод не должен ничего возвращать, тип возвращаемого значения указывают как void. А если методу для работы не нужны входные параметры, скобки оставляют пустыми:
Как вызвать метод в Java
Метод с модификатором public можно вызывать из любого класса, в том числе размещенного во внешнем файле. Если нужно, чтобы метод был доступен исключительно внутри своего класса, применяют модификатор private. Есть и более мягкий вариант ограничения доступа: методы с модификатором protected доступны подклассам своего класса и другим классам из того же пакета. Чем сложнее получить доступ к методу извне, тем безопаснее — ниже риск ошибок.
Статический метод в Java принадлежит классу, а не объектам (и экземплярам) класса. Поэтому его вызывают без создания экземпляра.
Для простоты мы сделали методы публичными и статическими и разместили их в главном классе программы.
Вызывают методы двумя способами — в зависимости от того, возвращают они что-то или нет. Если да, подставляем значение, куда нам нужно:
Мы вызвали maxFinder и сразу вывели результат его работы на экран. Для примера числа заданы вручную, как неименованные константы, но в реальных приложениях обычно сравнивают значения переменных.
После вызова метод управляет программой до окончания своей работы: пока в его теле не сработает оператор возврата или прерывания, либо пока не будут выполнены все находящиеся в нём инструкции.
Вызовем theWarning, который ничего не возвращает:
Этот метод обходится без помощников — делает, что должен, и передаёт управление последующему коду.
Вызов метода из другого класса
А если бы maxFinder находился в отдельном классе и был не статическим? Тогда для его вызова пришлось бы сначала создать объект класса, в котором он находится. Допустим, метод находится в классе SampleClass. Вызываем:
Статический метод вызывают через точку от имени класса — вот так:
Перегрузка методов в Java
Что, если нам нужно сравнивать не только целые числа, но и числа с плавающей точкой? Реализовать это поможет перегрузка метода. Копипастим метод maxFinder в тот же класс, заменяем типы всех задействованных значений на double:
Имя метода не меняем! Это и есть перегрузка: компилятор сам выберет, какую из версий метода использовать — в зависимости от того, значения какого типа сравниваем.
Ключевое слово this в методах Java
Ключевое слово this позволяет ссылаться на экземпляры класса: их переменные, методы и конструкторы. Используют this только внутри метода или конструктора экземпляра. Например, вот так можно связать входные параметры метода с одноименными параметрами конкретного экземпляра класса:
Ещё пример — вызов одного конструктора из другого:
Это называется «явный вызов конструктора».
Абстрактные методы в Джаве
Абстрактным называют метод, который объявлен без реализации — он не имеет ни тела, ни даже фигурных скобок. Перед именем такого метода ставят модификатор abstract:
Зачем он такой нужен? В качестве шаблона для других методов из других классов. Вот есть у нас абстрактный класс «Строение», а в нём — абстрактный метод «возвести». Реализовывать эти абстракции нужно через несколько неабстрактных классов-наследников и их методы. Пример: класс «Хижина» — метод «стройХижину», класс «Мост» — метод «стройМост» и др.
Поскольку конкретной реализации у абстрактного класса нет, экземпляры его создавать нельзя. Он — шаблон, который задаёт структуру для других классов и содержит объявления методов.
Кроме этого, рекомендуем помотреть вебинар по введению в ООП на Java, где также будет рассматриваться работа с методами и конструкторами.
Если я правильно понимаю то тебе нужно вначале объявить класс, метод которого ты хочешь вызвать. К примеру так:
А более подробно лучше конечно прочитать документацию по тем ссылкам которые указывались ранее.