- Русские Блоги
- Методы в Java (без параметров и без возвращаемого значения; без параметров и возврата; без параметров и без возврата; параметры и возврат)
- Методы Java — как вызывать и использовать
- Объявление и определение метода в Java
- Как вызвать метод в Java
- Вызов метода из другого класса
- Перегрузка методов в Java
- Ключевое слово this в методах Java
- Абстрактные методы в Джаве
Русские Блоги
Методы в Java (без параметров и без возвращаемого значения; без параметров и возврата; без параметров и без возврата; параметры и возврат)
1. Без параметров и без возвращаемого значения
package learn; / * Как определять методы в Java Так называемый метод - это упорядоченная комбинация кодов, используемых для решения типа проблемы, которая представляет собой функциональный модуль. При нормальных обстоятельствах синтаксис определения метода следующий: модификатор доступа тип возвращаемого значения имя метода (список параметров) среди них: 1. Модификатор доступа: объем разрешений метода, к которому разрешен доступ, который может быть открытым, защищенным, частным или даже опущенным, где открытый означает, что метод может быть вызван любым другим кодом. Использование других модификаторов будет подробно описано в следующих главах. Объясните капли 2. Тип возвращаемого значения: тип возвращаемого значения метода. Если метод не возвращает никакого значения, тип возвращаемого значения указывается как void; если метод имеет возвращаемое значение, вам необходимо указать тип возвращаемого значения и использовать оператор return в теле метода для возврата Стоимость 3. Имя метода: в названии определенного метода должен использоваться допустимый идентификатор. 4. Список параметров: список параметров, переданный методу. Может быть несколько параметров. Несколько параметров разделяются запятыми. Каждый параметр состоит из типа параметра и имени параметра, разделенных пробелами. В зависимости от того, есть ли у метода параметры и возвращаемое значение, методы можно разделить на четыре категории: Ø Без параметра и без метода возвращаемого значения Ø Нет параметра с методом возвращаемого значения Ø Методы с параметрами и без возвращаемого значения Ø Методы с параметрами и возвращаемыми значениями */ public class JavaMethod < // Определяем метод с именем print и выводим значение public void print() < System.out.println("JavaMethod"); >public static void main(String[] args) < // Вызов метода печати в основном методе JavaMethod test = new JavaMethod (); // Создаем объект, имя объекта - test // Вызывается в виде имени объекта. Имя метода () test.print(); //JavaMethod text = new JavaMethod(); test.show (); // Вызов метода show >// Операция без параметров и без возвращаемого значения public void show() < System.out.println("Imooc"); >>
2. Нет параметра с возвращаемым значением
package learn; / * 1 Если тип возвращаемого значения метода void, возвращаемое значение нельзя использовать в методе! * 2. Возвращаемое значение метода может иметь не более одного и не может возвращать несколько значений. * 3. Тип возвращаемого значения метода должен быть совместимым. Например, если тип возвращаемого значения - int, он не может вернуть значение String. * */ public class WuCanYouZhi < public static void main(String[] args) < // Сначала создаем объект с именем scores WuCanYouZhi scores = new WuCanYouZhi(); // Вызвать метод и получить возвращаемое значение, сохранить его в переменной score int score = scores.classSum(); System.out.println ("и есть:" + оценка); >// Определяем метод без параметров и возвращаемого значения public int classSum() < int a = 2; int b = 55; int sum = a + b; return sum; >>
3. Нет возвращаемого значения с параметрами.
package learn; // С параметрами и без возвращаемого значения /*Заметка: * 1. При вызове метода с параметрами вы должны убедиться, что количество, тип и порядок фактических параметров однозначно соответствуют формальным параметрам. * 2. При вызове метода в фактическом параметре не требуется указывать тип данных. * 3. Параметры метода могут быть базовыми типами данных, такими как int, double и т. Д., Или ссылочными типами данных, такими как String, array и т. Д. * 4. При наличии нескольких параметров метода эти параметры разделяются запятыми. * */ public class DaiCanWuFangHui < public static void main(String[] args) < // Создаем объект DaiCanWuFangHui hello = new DaiCanWuFangHui(); // Вызов метода show и передача параметров hello.show («Мукенет»); hello.calcAvg(87, 91); >// Создаем метод с параметрами public void show (String name)/ String - это тип параметра, name - это имя параметра System.out.println («Добро пожаловать!» + Имя + «.»); > public void calcAvg(double score1,double score2) < double sum = score1 + score2; double avg = sum / 2; System.out.print («Средняя оценка:» + avg); >>
4. С параметром и возвращаемым значением
package learn; // С параметрами и возвращаемым значением public class DaiCanDaiFanHui < public String show(String name) < return "Добро пожаловать" + имя + "!"; >public static void main(String[] args) < DaiCanWuFangHui hello = new DaiCanWuFangHui(); hello.show («Мукенет»); >>
5. Небольшие упражнения с параметрами и возвращаемыми значениями.
package learn; //// Функция реализации: сортировать и выводить результаты тестов, возвращать количество оценок import java.util.Arrays; public class DcdfhPractice < public static void main(String[] args) < DcdfhPractice hello = new DcdfhPractice(); int[] scores=; // Вызвать метод, передать массив оценок и получить количество оценок int count= hello.sort(scores); System.out.println ("Всего" + счетчик + "информация о результатах!"); > // Записываем метод сортировки public int sort(int []scores) < Arrays.sort(scores); System.out.println(Arrays.toString(scores)); // Возвращает количество элементов в массиве return scores.length; >>
Подсказки: код написан на Eclipse.
Методы Java — как вызывать и использовать
Что такое методы в Java, как они работают, когда их называют абстрактными. Учимся пользоваться готовыми методами языка, а также объявлять, определять, перегружать и вызывать собственные.
В объектно-ориентированном программировании метод — это именованный блок кода, который объявляется внутри класса и может быть использован многократно. Если вы знакомы с процедурным программированием (Pascal, Basic), вспомните, что такое функция — по принципу работы у неё и метода много общего.
Хорошо написанный метод решает одну практическую задачу: находит квадратный корень из числа (как штатный метод sqrt() в Java), преобразует число в строку (метод toString()), присваивает значения полям объекта и так далее.
Новый метод сначала объявляют и определяют, затем вызывают для нужного объекта или класса.
Штатные — встроенные — методы языка работают со служебными объектами. Например, метод print в Java выводит значения в консоль. Вызывают его так:
Обратите внимание на структуру: у класса System есть поле out — поток ввода/вывода. Поле — тоже объект, и у него есть метод print(), который мы вызываем.
Ещё есть метод println(), который при выводе значений автоматически переводит каретку на следующую строку. Это избавляет от необходимости ставить «\n» в месте переноса строки.
Чтобы Java-приложение могло работать, в его базовом классе обязательно нужно объявить метод main.
public static void main(String[] args) < // здесь основной код и вызовы других методов >
Как видите, в качестве параметра main принимает массив строк, в данном случае — параметров запуска.
Объявление и определение метода в Java
Методы могут возвращать или не возвращать значения, могут вызываться с указанием параметров или без. Тип возвращаемых данных указывают при объявлении метода — перед его именем.
В примере ниже метод должен найти большее из двух целых чисел, поэтому тип возвращаемого значения — int:
public static int maxFinder(int a, int b) < //заголовок метода //ниже — тело метода int max; if (a b) max = b; else max = a; return max; >
В заголовке метода сначала идут модификаторы, определяющие, на каких условиях он доступен для вызова. Об этом чуть ниже. Вернёмся к заголовку: int — возвращаемый тип, maxFinder — имя метода, в скобках — параметры.
В теле метода заводим переменную max, куда потом запишем большее число. Далее сравниваем значения, фиксируем большее в max и возвращаем.
Обратите внимание, return может работать не только с одной переменной, но и с выражением. Если бы мы не сравнивали значения, а складывали, результат можно было бы вернуть без дополнительной внутренней переменной. В теле метода была бы всего одна строка:
Когда метод не должен ничего возвращать, тип возвращаемого значения указывают как void. А если методу для работы не нужны входные параметры, скобки оставляют пустыми:
static void theWarning() < System.out.println("Мне ничего не надо, и вы от меня ничего не получите."); >
Как вызвать метод в Java
Метод с модификатором public можно вызывать из любого класса, в том числе размещенного во внешнем файле. Если нужно, чтобы метод был доступен исключительно внутри своего класса, применяют модификатор private. Есть и более мягкий вариант ограничения доступа: методы с модификатором protected доступны подклассам своего класса и другим классам из того же пакета. Чем сложнее получить доступ к методу извне, тем безопаснее — ниже риск ошибок.
Статический метод в Java принадлежит классу, а не объектам (и экземплярам) класса. Поэтому его вызывают без создания экземпляра.
Для простоты мы сделали методы публичными и статическими и разместили их в главном классе программы.
Вызывают методы двумя способами — в зависимости от того, возвращают они что-то или нет. Если да, подставляем значение, куда нам нужно:
public static void main(String args[]) < System.out.print(maxFinder(3,8)); >
Мы вызвали maxFinder и сразу вывели результат его работы на экран. Для примера числа заданы вручную, как неименованные константы, но в реальных приложениях обычно сравнивают значения переменных.
После вызова метод управляет программой до окончания своей работы: пока в его теле не сработает оператор возврата или прерывания, либо пока не будут выполнены все находящиеся в нём инструкции.
Вызовем theWarning, который ничего не возвращает:
public static void main(String args[]) < theWarning(); System.out.print(“theWarning завершил свою работу. Идём дальшe.”); >
Этот метод обходится без помощников — делает, что должен, и передаёт управление последующему коду.
Вызов метода из другого класса
А если бы maxFinder находился в отдельном классе и был не статическим? Тогда для его вызова пришлось бы сначала создать объект класса, в котором он находится. Допустим, метод находится в классе SampleClass. Вызываем:
public void main(String args[]) < SampleClass sc= new SampleClass(); System.out.print(sc.maxFinder(5,8)); >
Статический метод вызывают через точку от имени класса — вот так:
System.out.print(SomeClass.maxFinder(5,8));
Перегрузка методов в Java
Что, если нам нужно сравнивать не только целые числа, но и числа с плавающей точкой? Реализовать это поможет перегрузка метода. Копипастим метод maxFinder в тот же класс, заменяем типы всех задействованных значений на double:
public static double maxFinder(double a, double b) < double max; //остальную часть тела метода оставляем без изменений >
Имя метода не меняем! Это и есть перегрузка: компилятор сам выберет, какую из версий метода использовать — в зависимости от того, значения какого типа сравниваем.
Ключевое слово this в методах Java
Ключевое слово this позволяет ссылаться на экземпляры класса: их переменные, методы и конструкторы. Используют this только внутри метода или конструктора экземпляра. Например, вот так можно связать входные параметры метода с одноименными параметрами конкретного экземпляра класса:
class UserData < int id, age, phone; void setProfileData(int id, int age, int phone) < this.id=id; this.age=age; this.phone=phone; > >
Ещё пример — вызов одного конструктора из другого:
class ProfileData < int id; ProfileData() < this(100); > ProfileData(int id) < this.id = id; > >
Это называется «явный вызов конструктора».
Абстрактные методы в Джаве
Абстрактным называют метод, который объявлен без реализации — он не имеет ни тела, ни даже фигурных скобок. Перед именем такого метода ставят модификатор abstract:
Зачем он такой нужен? В качестве шаблона для других методов из других классов. Вот есть у нас абстрактный класс «Строение», а в нём — абстрактный метод «возвести». Реализовывать эти абстракции нужно через несколько неабстрактных классов-наследников и их методы. Пример: класс «Хижина» — метод «стройХижину», класс «Мост» — метод «стройМост» и др.
package ru.your.classes; abstract class Construction < abstract void build_it(String msg1); abstract void sell_it(String msg2); > public class Hut extends Construction < // неабстрактный класс @Override // переопределяем метод void build_it(String msg1) < System.out.println("Хижина построена!"); > @Override void sell_it(String msg2) < System.out.println("Хижина продана."); > > public abstract class Bridge extends Construction < @Override void build_it(String msg1) < System.out.println("Мост построен!"); > // Допустим, продавать объекты класса Bridge не предполагается. // Тогда sell_it можем не переопределять. // Но обязательно создадим абстрактный дочерний метод: abstract void sell_it(String msg2); >
Поскольку конкретной реализации у абстрактного класса нет, экземпляры его создавать нельзя. Он — шаблон, который задаёт структуру для других классов и содержит объявления методов.
Кроме этого, рекомендуем помотреть вебинар по введению в ООП на Java, где также будет рассматриваться работа с методами и конструкторами.