Что такое функция в java
Перейти к содержимому

Что такое функция в java

  • автор:

Создание функций на языке Java

Функция — это небольшая программа, которая выполняет определённые действия при вызове функции по имени.

В языке Java существуют свои встроенные и готовые к использованию функции, но никто не отменял пользовательских функций.

Пользовательская функция — это функция созданная разработчиком для конкретной задачи.

Написание функций относят к процедурному подходу в программировании.

Чаще всего в функции помещают повторяющийся программный код. Для того, чтобы не писать одни и те же строчки кода, их выносят в отдельный блок, а затем вызывают по имени в основном коде программы когда это необходимо.

Различают два основных вида функций:

  1. Функция, которая что-то возвращает;
  2. Функция, которая ничего не возвращает;

Также функции можно разделить на две категории:

  1. Функция без параметров;
  2. Функция с параметрами;

Запомните: переменная созданная в функции, умирает после завершения функции и более не существует!

Создание функции, которая возвращает

Данный тип функций является наиболее используемым, так как почти всегда требуется что-то посчитать, произвести некое преобразование и тому подобное, следовательно полученный результат необходимо использовать вне функции. Всё что было создано в функции в конечном счёте умирает в ней же, в связи с этим необходимо вернуть результат в основной код программы.

Сделать это помогает оператор return

Создадим функцию, которая вернёт значение переменной и присвоит переменной в основном коде это значение.

Что такое функция в java

Когда в обучении по программированию больше узнал о водороде и островах, чем в школе по химии и географии

awaithonley Уровень 14
27 сентября 2023
поставь лайк и устроишься на работу
26 сентября 2023
Что такое ачивка и почему все просят лайкать?
Escanor Уровень 11
26 сентября 2023
Лайкните пожалуйста для ачивки :3
Anonymous #3113298 Уровень 8 Expert
24 сентября 2023
Одарите, пожалуйста, лайками для прогресса�� И вам воздастся������
Владимир Шило Уровень 11
21 сентября 2023
Кто не лайкнет тот редиска!))
jagaDraga Уровень 11
19 сентября 2023
Лайк, если фапали на Six (у меня на аве) из Улетного Трипа! P/S мутим ачивку
mikhail Ch Уровень 16
17 сентября 2023
Решил обе задачи за минуту)) заслуживаю лайк!))
Сообщество

JavaRush — это интерактивный онлайн-курс по изучению Java-программирования c нуля. Он содержит 1200 практических задач с проверкой решения в один клик, необходимый минимум теории по основам Java и мотивирующие фишки, которые помогут пройти курс до конца: игры, опросы, интересные проекты и статьи об эффективном обучении и карьере Java‑девелопера.

Подписывайтесь
Язык интерфейса
«Программистами не рождаются» © 2023 JavaRush
Скачивайте наши приложения
«Программистами не рождаются» © 2023 JavaRush

Этот веб-сайт использует данные cookie, чтобы настроить персонально под вас работу сервиса. Используя веб-сайт, вы даете согласие на применение данных cookie. Больше подробностей — в нашем Пользовательском соглашении.

Пользовательские функции Java: как создать функцию в Java?

Функция представляет собой небольшую программу, выполняющую определённые действия, когда её (функцию) вызывают по имени. В языке программирования Java есть много встроенных и готовых к работе функций, однако никто не мешает создавать пользователю свои функции.

Исходя из вышеизложенного, пользовательской функцией можно назвать функцию, которую создал сам разработчик для решения конкретной задачи. Непосредственный процесс написания функций считается процедурным подходом в программировании.

Что обычно помещают в функции? Как правило, речь идёт о повторяющемся программном коде. Соответственно, чтобы программисту не писать те же самые строчки кода снова и снова, он просто выносит эти строчки в отдельный блок, а потом вызывает этот блок в основном Java-коде программы тогда, когда это нужно.

Идём дальше, в Java выделяют 2 вида функций: 1. Функция, которая что-либо возвращает. 2. Функция, которая не возвращает ничего.

Вдобавок к этому, функция в Джаве может быть с параметрами и без них. Тут следует напомнить важный момент: переменная, которая создана в функции, после завершения этой функции «умирает», то есть больше не существует.

Рассмотрим формулу создания функции в Java:

Создание функций в Java

Для начала создадим пользовательскую функцию, которая что-нибудь возвращает. Этот тип функций используется чаще всего, ведь очень часто нужно что-либо посчитать, выполнить преобразование и т. п., то есть речь идёт о том, чтобы использовать полученный результат вне этой функции. А так как всё, что создано в функции, после её завершения «погибает», нам надо, чтобы в основной код программы вернулся результат работы этой функции. Для это используется оператор return.

Итак, создадим пользовательскую функцию, которая вернёт нам значение переменной, а также присвоит это значение переменной в основном коде.

 
public class Main < public static int function1()< //идентификатор доступа, функция является статичной, тип возвращаемого значения, имя функции без параметров int a = 5; //создаём переменную со значением return a; //возвращаем значение при вызове данной функции >public static void main(String[] args) < //блок основного кода нашей программы >>

Таким образом, создаётся переменная, которая потом возвращается в нужном разработчику месте. Но вообще, в теле пользовательской функции мы можем прописать любой код, например, по созданию массивов, циклов и другой структуры.

Теперь давайте создадим функцию в Java, которая ничего возвращать не будет. Такой тип функции может пригодиться во время работы с глобальными переменными либо если надо что-либо напечатать и вывести на экран.

По большему счёту, особых отличий между написанием функций обоих видов нет. Главное — указать другой тип (void) и не применять return.

 
public class Main < public static void function2()< System.out.println("Записывайтесь на курсы OTUS!"); //выводим сообщение на экран >public static void main(String[] args) < //основной блок нашей программы >>

Вызываем функции без параметров

Чтобы работать с функциями, получая от них какой-либо результат, надо вызвать функцию в нужном месте по имени.

Давайте воспользуемся написанными нами функциями и вызовем их в основном коде.

 
public class Main < public static int function1()< int a = 5; return a; >public static void function2() < System.out.println("Записывайтесь на курсы OTUS!"); >public static void main(String[] args) < //основной блок программы int b = function1(); //присваиваем переменной значение, которое возвратит первая функция System.out.println(b); //выводим на экран значение нашей переменной function2(); //вызываем по имени вторую функцию >>

Вывод будет следующим:

 
5 Записывайтесь на курсы OTUS!

Следует добавить, что функция, которая что-либо возвращает, обязательно должна вызываться так, как указано в примере, то есть возвращаемое значение должно быть чему-то присвоено.

Создаём функции с параметрами

Иногда надо произвести над значениями какие-нибудь действия. Для этого нужно передать нашей пользовательской функции эти самые значения. Когда значения передаются в нашу функцию, они становятся её аргументами функции.

Итак, давайте создадим функцию с параметрами, а потом вызовем её в основном коде с помощью аргументов. Возведём переменную в определённую степень, а потом вернём значение в переменную.

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

 
public class Main < public static int function3(int var_1, int var_2)< //функция с параметрами int a = 1; //создаём переменную, в которой будет находиться расчётное значение for(int i = 0; i < var_2; i++)< //используем цикл для возведения в степень a = a * var_1; //перемножаем новое значение со старым, возводя тем самым в степень >return a; //возвращаем посчитанное значение > public static void main(String[] args) < //основной блок программы int result = function3(5,3); //вызываем функцию, передав 2 аргумента (возводим 5 в третью степень) System.out.println(result); //выводим значение переменной >>

В консоли увидим следующее значение:

Таким образом, в функцию в Java мы можем помещать, что угодно. В нашем же случае, аргументы надо передать обязательно, иначе возникнет ошибка.

Вот и всё, надеемся, что теперь вы разобрались с темой по созданию пользовательских функций на языке Java. Если же интересуют более сложные задачи, добро пожаловать на наш курс для опытных Java-разработчиков!

#6. Вводный курс по JAVA. Методы

Методы в Java — это законченная последовательность действий (инструкций), направленных на решение отдельной задачи. По сути, это функции (они же процедуры, подпрограммы) более ранних, не ООП языков. Только эти функции являются членами классов и для различия с обычными функциями, согласно терминологии объектно-ориентированного программирования, называются методами.

Методы определяются всегда внутри классов:

public class Main < public static void foo() < // Тело метода >>

foo - это метод, который мы определили в классе Main, давайте его рассмотрим.

  • public – тип доступа (метод может вызываться из другого класса). Существуют и другие типы доступа, к примеру private (метод доступен только внутри класса) и protected (о нем мы будем говорить позже).
  • static означает что метод статический, он принадлежит классу Main, а не конкретному экземпляру класса Main. Мы можем вызвать этот метод из другого класса так: Main.foo() .
  • void значит, что этот метод не возвращает значение. Методы могут возвращать значение в Java и оно должно быть определено при объявлении метода. Однако, вы можете использовать return просто для выхода из метода.
  • Этот метод не получает никаких аргументов, но методы java могут получать аргументы, как мы увидим далее на примерах.

Если тип возвращаемого значения не void, в теле метода должен быть хотя бы один оператор

return выражение;
где тип выражения должен совпадать с типом возвращаемого значения. Этот оператор возвращает результат вычисления выражения в точку вызова метода.
Если тип возвращаемого значения – void, возврат из метода выполняется либо после выполнения последнего оператора тела метода, либо в результате выполнения оператора
return;
(таких операторов в теле метода может быть несколько).
Пример объявления метода, возвращающего значение типа int – сумму двух своих параметров типа int:

int sum(int a, int b)

При вызове метода, например, sum (5, 3) , параметры 5 и 3 передаются в метод, как значения соответственно a и b , и оператор вызова метода sum (5, 3) – заменяется значением, возвращаемым методом ( 8 ).

В отличие от языка C, в котором тип параметра, задаваемого при вызове, приводится к типу параметра в объявлении функции, тип задаваемого параметра в Java должен строго соответствовать типу параметра в объявлении метода, поэтому вызов метода sum(1.5, 8) приведет к ошибке при компиляции программы.

Не статические методы

Не статические методы в Java используются чаще, чем статические методы. Эти методы могут принадлежать любому объекту, экземпляру класса, а не всему классу.

Не статические методы могут получать доступ и изменять поля объекта.

public class Student < private String name; public String getName() < return name; >public void setName(String name) < this.name = name; >>

Вызов методов требует экземпляра класса Student .

Student s = new Student(); s.setName("Danielle"); String name = s.getName(); Student.setName("Bob"); // Не будет работать! Student.getName(); // Не будет работать!

Перегруженные методы

В языке Java в пределах одного класса можно определить два или более ме­тодов, которые совместно используют одно и то же имя, но имеют разное количество параметров. Когда это имеет место, методы называют перегру­женными, а о процессе говорят как о перегрузке метода (method overloading).

Когда метод вызывается, то по количеству параметров и/или их типам среда выполнения Java определяет, какую именно версию перегруженного метода надо вызывать (тип возвращаемого значения во внимание не принимается, хотя, в принципе, он тоже может отличаться у разных версий перегруженных методов).

double sum(double a, double b)

вместе с объявленным ранее методом int sum(int a, int b)составляют пару перегруженных методов и при вызове sum(5, 8) будет вызван первый метод, а при вызове sum(5.0, 8.0) будет вызван второй метод.

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

Переопределение методов

Кроме перегрузки существует также замещение, или переопределение методов (англ. overriding). Замещение происходит, когда класс потомок (подкласс) определяет некоторый метод, который уже есть в родительском классе(суперклассе), таким образом новый метод заменяет метод суперкласса. У нового метода подкласса должны быть те же параметры или сигнатура, тип возвращаемого результата, что и у метода родительского класса.

public class Thought < public void message() < System.out.println("Я себя чувствую как стрекоза, попавшая в параллельную вселенную."); >> public class Advice extends Thought < @Override // Аннотация @Override с Java 5 является необязательной, но весьма полезной public void message() < System.out.println("Внимание: Даты в календаре ближе, чем кажутся."); >>

Класс Thought представляет собой суперкласс и обеспечивает вызов метода message() . Подкласс, называемый Advice , наследует каждый метод класса Thought . Однако, класс Advice переопределяет метод message() , замещая функционал, описанный в классе Thought .

В Java, когда подкласс содержит метод, переопределяющий метод суперкласса, то он может помимо своего метода вызывать и метод суперкласса при помощи ключевого слова super.
Например, нижеследующий вариант выводит оба сообщения при вызове метода подкласса:

public class Advice extends Thought < @Override public void message() < System.out.println("Внимание: Даты в календаре ближе, чем кажутся."); super.message(); // Вызов версии метода родительского класса >>

Существуют методы, которые подкласс не может переопределять. Например, в Java метод, объявленный с ключевым словом final , не может быть переопределён. Методы, объявленные как private или static не могут быть переопределены, поскольку это соответствует неявному использованию final .

Резюме

  • Каждый java-метод должен быть внутри класса
  • Статические методы принадлежат классу, а не статические методы принадлежат объектам, экземплярам класса
  • В пределах одного класса может быть два и более методов с одинаковыми именами, но разным набором параметров (перегрузка метода)
  • Класс-потомок может обеспечивать свою реализацию метода, уже реализованного в одном из родительских классов (переопределение метода)

Упражнение

Написать метод printFullName класса Student, который выводит полное ФИО студента.

Выполните упражнение, прежде чем перейти к следующему уроку.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *