java передать метод как параметр
Java передать метод как параметр
Лямбды как параметры методов
Одним из преимуществ лямбд в java является то, что их можно передавать в качестве параметров в методы. Рассмотрим пример:
То есть в данном случае все числа должны быть четными или остаток от их деления на 2 должен быть равен 0. Затем это лямбда-выражение передается в вызов метода sum.
При этом можно не определять переменную интерфейса, а сразу передать в метод лямбда-выражение:
Ссылки на метод как параметры методов
Начиная с JDK 8 в Java можно в качестве параметра в метод передавать ссылку на другой метод. В принципе данный способ аналогичен передаче в метод лямбда-выражения.
Ссылка на метод передается в виде имя_класса::имя_статического_метода (если метод статический) или объект_класса::имя_метода (если метод нестатический). Рассмотрим на примере:
Здесь также определен функциональный интерфейс Expression, который имеет один метод. Кроме того, определен класс ExpressionHelper, который содержит два статических метода. В принципе их можно было определить и в основном классе программы, но я вынес их в отдельный класс.
При втором вызове метода sum отдельно создается объект Expression, который затем передается в метод:
Использование ссылок на методы в качестве параметров аналогично использованию лямбда-выражений.
Если нам надо вызвать нестатические методы, то в ссылке вместо имени класса применяется имя объекта этого класса:
Ссылки на конструкторы
При использовании конструкторов методы функциональных интерфейсов должны принимать тот же список параметров, что и конструкторы класса, и должны возвращать объект данного класса.
Лямбды как результат методов
Также метод в Java может возвращать лямбда-выражение. Рассмотрим следующий пример:
В данном случае определен функциональный интерфейс Operation, в котором метод execute принимает два значения типа int и возвращает значение типа int.
Метод action принимает в качестве параметра число и в зависимости от его значения возвращает то или иное лямбда-выражение. Оно может представлять либо сложение, либо вычитание, либо умножение, либо просто возвращает 0. Стоит учитывать, что формально возвращаемым типом метода action является интерфейс Operation, а возвращаемое лямбда-выражение должно соответствовать этому интерфейсу.
Либо можно сразу получить и тут же выполнить лямбда-выражение:
Java передать метод в качестве параметра
Я ищу способ передать метод по ссылке. Я понимаю, что Java не передает методы в качестве параметров, однако я хотел бы получить альтернативу.
То, что я хотел бы сделать, это что-то похожее на это:
16 ответов
Возможный Дубликат : Java передать метод в качестве параметра Можно ли передать метод в качестве параметра в Java? Если я не могу, то каков был бы наилучший курс действий для приведенного ниже метода без необходимости повторять код. public void enterUserInput(javax.swing.JTextField inputField.
В Java 8 теперь вы можете более легко передать метод, используя выражения Lambda и ссылки на методы. Во-первых, некоторая предыстория: функциональный интерфейс-это интерфейс, который имеет один и только один абстрактный метод, хотя он может содержать любое количество методов по умолчанию (новый в Java 8) и статических методов. Выражение lambda может быстро реализовать абстрактный метод без всего ненужного синтаксиса, необходимого, если вы не используете выражение lambda.
Без выражений lambda:
С выражениями lambda:
Синтаксис выражений Lambda
Выражение lambda состоит из следующего:
Разделенный запятыми список формальных параметров,заключенный в круглые скобки. Метод CheckPerson.test содержит один параметр p, который представляет экземпляр класса Person.
Примечание : Вы можете опустить тип данных параметров в выражении lambda. Кроме того, вы можете опустить скобки, если есть только один параметр. Например, также допустимо следующее выражение lambda:
Тело, состоящее из одного выражения или блока операторов. В этом примере используется следующее выражение:
Если вы укажете одно выражение, то среда выполнения Java вычислит это выражение, а затем вернет его значение. Кроме того, вы можете использовать оператор return:
Оператор return не является выражением; в выражении lambda операторы должны заключаться в фигурные скобки (<>). Однако вам не нужно заключать вызов метода void в фигурные скобки. Например, ниже приведено допустимое выражение lambda:
Обратите внимание, что выражение lambda очень похоже на объявление метода; вы можете рассматривать выражения lambda как анонимные методы—методы без имени.
Вот как вы можете «pass a method» использовать выражение lambda:
Класс C может быть сокращен еще немного, используя ссылки на методы, такие как:
Можно ли передать метод в качестве параметра методу? self.method2(self.method1) def method1(self): return ‘hello world’ def method2(self, methodToRun): result = methodToRun.call() return result
Начиная с Java 8 существует интерфейс Function ( docs ), который имеет метод
Вы можете использовать его для передачи функций в качестве параметров другим функциям. T-тип ввода функции, R-тип возврата.
Это выглядело бы так:
И вы бы назвали это использованием ссылок на методы:
Предполагая, что вы определили методы changeColor() и changeSize() в одном классе.
Используйте объект java.lang.reflect.Method и вызовите invoke
Сначала определите интерфейс с методом, который вы хотите передать в качестве параметра
Реализуйте класс с помощью метода
Это позволяет передать cmd в качестве параметра и вызвать вызов метода, определенного в интерфейсе
Оба варианта(lambda и ссылка на метод) требуют интерфейса, доступного с одним методом, подпись которого используется:
Имена методов с этого момента не будут иметь значения. Там, где принимается lambda, также используется ссылка на метод. Например, чтобы использовать нашу подпись здесь:
Это всего лишь простой вызов интерфейса, до тех пор, пока lambda 1 не будет передан:
Ссылки на методы аналогичны. Дано:
1 Некоторые не считают это lambda, так как у него есть побочные эффекты. Однако это иллюстрирует использование одного из них более straightforward-to-visualize.
В последний раз, когда я проверял, Java не способен изначально делать то, что вы хотите; вы должны использовать ‘work-arounds’, чтобы обойти такие ограничения. Насколько я понимаю, интерфейсы ARE-это альтернатива, но не очень хорошая альтернатива. Возможно, тот, кто сказал вам это, имел в виду что-то вроде этого:
Который вы затем вызовете с помощью:
Если вам не нужны эти методы для возврата чего-либо, вы можете заставить их возвращать выполняемые объекты.
Затем используйте его, как:
Я не нашел ни одного примера, достаточно явного для меня, о том, как использовать java.util.function.Function для простого метода в качестве функции параметра. Вот простой пример:
Который затем вернется в вывод:
Пример должен быть запущен как есть, затем вы можете попробовать более сложные вещи из приведенных выше ответов с различными классами и интерфейсами.
Java есть механизм для передачи имени и вызова его. Это часть механизма отражения. Ваша функция должна принимать дополнительный параметр метода класса.
Я не эксперт java, но я решаю вашу проблему вот так:
Я определяю параметр в своем специальном интерфейсе
Используйте шаблон наблюдателя (иногда также называемый шаблоном слушателя):
new ComponentDelegate(). объявляет анонимный тип, реализующий интерфейс.
Вот основной пример:
Я не нашел здесь никакого решения, которое показывало бы, как передать метод с привязанными к нему параметрами в качестве параметра метода. Ниже приведен пример того, как вы можете передать метод со значениями параметров, уже привязанными к нему.
Другой пример показывает, как передать метод, который на самом деле возвращает что-то
Пример решения с отражением, переданный метод должен быть общедоступным
Я ценю ответы выше, но мне удалось добиться того же поведения, используя метод ниже; идея заимствована из Javascript обратных вызовов. Я открыт для коррекции, хотя пока все так хорошо (в производстве).
Идея состоит в том, чтобы использовать возвращаемый тип функции в сигнатуре, а это означает, что выход должен быть статическим.
Ниже приведена функция, которая запускает процесс с таймаутом.
Похожие вопросы:
У меня есть строфа кода, который неоднократно используется. Вот два примера: public java.sql.Struct createStruct(String typeName, Object[] attributes) < String searchPath = getSearchPath(); String.
Я пишу программу и хочу знать, могу ли я передать метод в качестве параметра другого метода. Например, что-то из следующего: public boolean update(Method m)< //input is a method int i = m.execute();.
Возможный Дубликат : Java передать метод в качестве параметра Можно ли передать метод в качестве параметра в Java? Если я не могу, то каков был бы наилучший курс действий для приведенного ниже.
Можно ли передать метод в качестве параметра методу? self.method2(self.method1) def method1(self): return ‘hello world’ def method2(self, methodToRun): result = methodToRun.call() return result
Есть ли способ передать метод универсального типа в качестве параметра? То, что я пытаюсь достичь, это что-то вроде этого: ListUtils.mapObjectToField( entries, Contact.getZipCode ); Я передаю.
Итак, я изучаю Java, и у меня есть метод интерфейса, который требует суперкласса в качестве параметра. Я хотел бы передать дочерний класс в качестве параметра. Кто-нибудь знает простой способ.
Я хочу передать метод в качестве параметра в методе типа callMethod(someArg, methodToPass ) И в определении callMethod, я хочу назвать это клавиши Fn то есть. MethodToPass, то есть в другом файле.
Как передать функцию в качестве параметра в Java? [дубликат]
этот вопрос уже есть ответ здесь:
можно ли передать метод в метод Java в качестве параметра? Если да, может кто-нибудь, пожалуйста, направлять меня? Это не кажется тривиальным
8 ответов:
Java 8 и выше
использование лямбда-выражений Java 8+, Если у вас есть класс или интерфейс только с одним методом, например:
потом в любом месте, где используется MyInterface, вы можете заменить лямбда-выражение:
например, вы можете создать новый поток очень быстро:
и с помощью синтаксис ссылки на метод чтобы сделать его еще уборщик:
без лямбда-выражения, эти два последних примера будут выглядеть так:
Перед Java 8
этот шаблон известен как Команда.
имейте в виду, что вам лучше всего создать интерфейс для вашего конкретного использования. Если вы решили пойти с callable, то вы замените T выше с любым типом возвращаемого значения, которое вы ожидаете, например String.
в ответ на ваш комментарий ниже, можно сказать:
затем назовите его, возможно, используя анонимный внутренний класс:
имейте в виду, что это не трюк. Это просто базовый концептуальный эквивалент java для указателей функций.
для этого можно использовать отражение Java. Метод будет представлен в виде экземпляра java.ленг.отражать.Метод.
Лямбда-Выражения
синтаксис лямбда-выражений
лямбда-выражение состоит из следующего:
A разделенный запятыми список формальных параметров, заключенный в круглые скобки. В CheckPerson.метод испытания содержит один параметр, p, который представляет собой экземпляр класса человек.
Примечание: ты можно опустить тип данных параметров в лямбда-выражении. В кроме того, вы можете опустить скобки, если есть только один параметр. Например, также допустимо следующее лямбда-выражение:
тело, которое состоит из одного выражения или блока выражений. В этом примере используется следующее выражение:
если вы укажете одно выражение, то среда выполнения Java вычисляет выражение и возвращает его значение. Альтернативно, вы можете использовать оператор return:
оператор return не является выражением; в лямбда-выражении необходимо заключать операторы в фигурные скобки (<>). Тем не менее, у вас нет чтобы заключить вызов метода void в фигурные скобки. Например, ниже приведено допустимое лямбда-выражение:
обратите внимание, что лямбда-выражение очень похоже на объявление метода ; лямбда-выражения можно рассматривать как анонимные методы-методы без имени.
вот как вы можете «передать метод», используя лямбда-выражение:
приведенный выше пример можно сократить еще больше, используя :: оператор.
благодаря Java 8 вам не нужно делать следующие шаги, чтобы передать функцию в метод, вот для чего нужны лямбды, см. учебник лямбда-выражения Oracle. Остальная часть этого поста описывает то, что нам приходилось делать в старые добрые времена, чтобы реализовать эту функциональность.
обычно вы объявляете свой метод как принимающий некоторый интерфейс с одним методом, а затем передаете объект, который реализует этот интерфейс. Пример находится в commons-collections, где у вас есть интерфейсы для замыкания, трансформатора и предиката, а также методы, в которые вы передаете их реализации. Guava-это новые улучшенные commons-коллекции, вы можете найти там эквивалентные интерфейсы.
Так, например, commons-collections имеет org.апаш.палата общин.коллекции.CollectionUtils, который имеет множество статических методов, которые принимают объекты, переданные в, чтобы выбрать один наугад, есть один называется существует с этой сигнатурой:
Он принимает объект что реализует интерфейс предикат, который означает, что он должен иметь метод, который принимает объект и возвращает логическое значение.
Так я могу назвать это так:
и это возвращает true или false в зависимости от того, someCollection содержит объект, для которого предикат возвращает значение true.
В любом случае, это всего лишь пример, и commons-collections устарел. Я просто забыл эквивалент в гуаве.
Java поддерживает закрытие просто отлично. Он просто не поддерживает функции, поэтому синтаксис, к которому вы привыкли для замыканий, гораздо более неудобен и громоздок: вы должны обернуть все в класс с помощью метода. Например,
вернет запускаемый объект, который run() метод «закрывает» x передано, как и в любом языке, который поддерживает первоклассные функции и замыкания.
я использовал шаблон команды, который @jk. упомянуто, добавив тип возврата:
Могу ли я передать метод как параметр другого метода в java?
Я пытаюсь измерить время выполнения для нескольких методов. поэтому я думал сделать метод вместо того, чтобы дублировать один и тот же код много раз.
6 ответов
методы не являются первоклассными объектами в Java, поэтому они не могут быть переданы как параметры. Вы можете использовать обертывание вызова метода в раздражающем классе, который расширяет, например, Runnable интерфейс:
самый простой способ сделать это-передавать интерфейс. Что-то вроде
и тогда у вас могут быть методы, которые принимают CommonFuncs в качестве аргумента. Реализации этих методов могут вызывать execute метод.
вы находитесь в правильном пути, вам нужно передать объект метода, целевой объект, на котором выполняется метод и аргументы, которые он принимает, а затем вызвать его в свой try catch, что-то вроде:
у меня есть счетчик вызовов объектов, который в основном выглядит так:
С двумя «время» методы синхронизации, которые возвращают что-то и другие методы, которые являются недействительными.
Я решил переосмыслить исключения как исключения во время выполнения (поскольку я не поклонник проверенных исключений), но вы также можете сделать свой пользовательский интерфейс MyRunnable исключениями и просто поймать и повторно бросить их. Вот использование вышеизложенного:
или это, в случае возвращаемого значения:
мне это нравится, потому что мои встречные объекты могут быть подвергнуты воздействию JMX и вводиться везде, где мне это нужно. Вы могли бы сделать то, что вы попросили, с размышлением, но я думаю, что это было бы грязно (ИМХО).
Методы Java — как вызывать и использовать
В объектно-ориентированном программировании метод — это именованный блок кода, который объявляется внутри класса и может быть использован многократно. Если вы знакомы с процедурным программированием (Pascal, Basic), вспомните, что такое функция — по принципу работы у неё и метода много общего.
Хорошо написанный метод решает одну практическую задачу: находит квадратный корень из числа (как штатный метод sqrt() в Java), преобразует число в строку (метод toString()), присваивает значения полям объекта и так далее.
Новый метод сначала объявляют и определяют, затем вызывают для нужного объекта или класса.
Штатные — встроенные — методы языка работают со служебными объектами. Например, метод print в Java выводит значения в консоль. Вызывают его так:
Обратите внимание на структуру: у класса System есть поле out — поток ввода/вывода. Поле — тоже объект, и у него есть метод print(), который мы вызываем.
Ещё есть метод println(), который при выводе значений автоматически переводит каретку на следующую строку. Это избавляет от необходимости ставить «\n» в месте переноса строки.
Чтобы 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(), который при выводе значений автоматически переводит каретку на следующую строку. Это избавляет от необходимости ставить «\n» в месте переноса строки.
Чтобы 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, где также будет рассматриваться работа с методами и конструкторами.