Как вызвать метод в методе java
Перейти к содержимому

Как вызвать метод в методе java

Как вызвать метод из другого класса java

Если вызываемый метод был объявлен как static , то для вызова нам достаточно указать имя класса, содержащего метод, и имя метода.

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

public class App  public static void main(String[] args)  MyClass.staticMethod(); // => Статический метод MyClass myClass = new MyClass(); myClass.notStaticMethod(); // => Нестатический метод > > class MyClass  public static void staticMethod()  System.out.println("Статический метод"); > public void notStaticMethod()  System.out.println("Нестатический метод"); > > 

Как вызвать метод Java?

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

как вызвать метод java

Создание нового класса

Добавление метода в новый класс

Давайте добавим один из наших методов. Добавьте следующий код в ваш класс:

package prjmethods; public class MyMethods  int total()  int a_Value = 10 + 10; return a_Value; > > 

Как вызвать наш новый метод Java

    Первое, что нужно сделать, это создать новый объект из нашего класса MyMethods. Добавьте следующую строку в метод Main:
package prjmethods; public class TestMethods  public static void main(String[] args)  MyMethods test1 = new MyMethods(); > > 
package prjmethods; public class TestMethods  public static void main(String[] args)  MyMethods test1 = new MyMethods(); int aVal = test1.total(); > > 

Мы устанавливаем переменную int с именем aVal. После знака равенства следует имя переменной нашего класса. Чтобы получить доступ к методам в классе, введите точку. NetBeans отобразит всплывающее окно с доступными методами:

Наша переменная total находится в списке (остальные встроены в методы). Круглые скобки пусты, потому что наш метод не принимает значения, но тип возвращаемого значения int отображается справа.

Дважды щелкните по total, чтобы добавить его в свой код. Затем введите точку с запятой, чтобы закончить строку.

Наконец, добавьте строку для печати:

package prjmethods; public class TestMethods  public static void main(String[] args)  MyMethods test1 = new MyMethods(); int aVal = test1.total(); System.out.println("Результат метода color: #d2cd86;">+ aVal); > > 

Когда код будет запущен, в окне «Вывод» отобразится следующее:

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

Если ваш метод имеет тип void, и вы хотите его вызвать, вам не нужно присваивать его новой переменной, такой как aVal.

Например, вернитесь к своему классу MyMethods и добавьте метод void, который вы встречали ранее:

package prjmethods; public class MyMethods  int total()  int a_Value = 10 + 10; return a_Value; > void print_text()  System.out.println("Здесь какой-то текст"); > > 

Этот новый метод называется print_text. Опять же, у него пусто в круглых скобках, так как мы не передаем ему никаких значений. Все, что он делает, это распечатывает текст.

Когда вы добавите метод void, переключитесь обратно на класс TestMethods и добавьте следующую строку, чтобы вызвать метод print_text:

test1.print_text(); 

Как только вы наберете точку, вы увидите, что новый метод появится в списке:

Оба наших метода теперь находятся в списке — total и print_text. Значения, которые они возвращают, отображаются справа, int и void.

Поскольку метод print_text является пустым методом, вам не нужно устанавливать возвращаемое значение. Все, что вам нужно, это имя вашего объекта, точка и метод void, который вы хотите вызвать. Затем Java просто продолжит выполнение кода внутри вашего метода.

Запустите свой код, и ваше окно вывода должно отобразить следующее:

Теперь мы знаем, как вызвать метод в Java. В следующем уроке мы подробнее рассмотрим передачу значений в методы.

Как использовать метод из другого класса java

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

// Класс, где вызываем методы другого класса public class Example  public static void main(String[] args)  // Создаем объект класса Greetings greetings = new Greetings(); // Вызываем метод greetings.printHello(); // => Hello // Вызываем статический метод Greetings.printHexlet(); // => Hexlet > > class Greetings  public void printHello()  System.out.println("Hello"); > public static void printHexlet()  System.out.println("Hexlet"); > > 

Методы Java — как вызывать и использовать

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

03 ноября 2017 4 минуты 270076

Автор статьи
Мария Лисянская

Автор статьи
Мария Лисянская
https://gbcdn.mrgcdn.ru/uploads/post/1283/og_cover_image/f0ecb16fc23bee81f9e830b5b2a56ae1

В объектно-ориентированном программировании метод — это именованный блок кода, который объявляется внутри класса и может быть использован многократно. Если вы знакомы с процедурным программированием (Pascal, Basic), вспомните, что такое функция — по принципу работы у неё и метода много общего.

Хорошо написанный метод решает одну практическую задачу: находит квадратный корень из числа (как штатный метод sqrt() в Java), преобразует число в строку (метод toString()), присваивает значения полям объекта и так далее.

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

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

System.out.print("Привет, мир!"); 

Обратите внимание на структуру: у класса 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 может работать не только с одной переменной, но и с выражением. Если бы мы не сравнивали значения, а складывали, результат можно было бы вернуть без дополнительной внутренней переменной. В теле метода была бы всего одна строка:

return a+b; 

Когда метод не должен ничего возвращать, тип возвращаемого значения указывают как 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:

abstract void methodName(); 

Зачем он такой нужен? В качестве шаблона для других методов из других классов. Вот есть у нас абстрактный класс «Строение», а в нём — абстрактный метод «возвести». Реализовывать эти абстракции нужно через несколько неабстрактных классов-наследников и их методы. Пример: класс «Хижина» — метод «стройХижину», класс «Мост» — метод «стройМост» и др.

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, где также будет рассматриваться работа с методами и конструкторами.

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

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