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

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

  • автор:

Вызов метода с другого класса

Вопрос: Как вызвать Menu в WindowApp что бы в этом диалоговом окне была вкладка Menu, или я намутил что-то в Menu классе, просто не могу понять как правильно построить структуру классов, с возможностью вызова методов одного в другого.. Спасибо за помощь!

Отслеживать
задан 3 дек 2020 в 23:34
user416946 user416946
9 1 1 серебряный знак 9 9 бронзовых знаков
Где происходит вызов метода?
4 дек 2020 в 8:32
В том то и дело, я не могу понять где правильно вызвать метод с класса Menu.
4 дек 2020 в 11:11
Что значит правильно или неправильно. Надо писать конкретно.
4 дек 2020 в 20:50

1 ответ 1

Сортировка: Сброс на вариант по умолчанию

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

Второй принцип: статические поля использовать только в крайних случаях, применять обычные поля, передавать значения в конструкторы.

Поэтому пример правится по шагам:

  • статический jFrame убирается, вместо него будет использоваться this , передаваемый в конструкторы
  • Menu не наследуется от MainWindow (меню же НЕ является окном)
  • но в меню нужен доступ до окна ( JFrame ), поэтому пусть оно будет полем в Menu
  • для инициализации поля с JFrame в Menu нужен конструктор
  • и добавить вызов addMenu у созданного объекта.

Итого получается такой набросок из исходного кода:

public class WindowApp extends JFrame < private String title = "AdventureTime The Game"; private Menu menu = new Menu(this); WindowApp() < setVisible(true); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setSize(550, 380); setLocationRelativeTo(null); setResizable(false); setTitle(title); menu.addMenu(); >> public class Menu < JMenuBar jMenuBar = new JMenuBar(); JMenu file = new JMenu("File"); JFrame jFrame; public Menu(JFrame jFrame) < this.jFrame = jFrame; >void addMenu() < jMenuBar.add(file); jFrame.setJMenuBar(jMenuBar); jFrame.revalidate(); >> 

Это только рабочий набросок. Но для развития подойдёт. Например, revalidate здесь не нужен, меню нужно развить, добавив пункты, setVisible обычно лучше делать после выставления всех параметров окна и т.д. и т.п.

Как вызвать метод из другого класса 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

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

// Класс, где вызываем методы другого класса 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"); > > 

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

Есть два класса, в одном из которых есть метод мэйн, в другом классе тоже есть методы. Как мне из класса. где есть метод мэйн вызвать методы другого класса?

  • Вопрос задан более трёх лет назад
  • 44605 просмотров

Комментировать
Решения вопроса 0
Ответы на вопрос 5
Михаил @cocain1988

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

class Apple < public String color; public String color()< return color>> class Shop < public static void main(String[] args)< Apple a = new Apple(); System.out.println( a.color() ); // Данный метод должен вывести цвет. >>

А более подробно лучше конечно прочитать документацию по тем ссылкам которые указывались ранее.

Ответ написан более трёх лет назад
Нравится 5 1 комментарий
Спасибо, хоть один добрый человек объяснил для чайников
software engineer
Пройди туториал чтоли?
docs.oracle.com/javase/tutorial
Ответ написан более трёх лет назад
Нравится 3 1 комментарий
olololosh @olololosh Автор вопроса
спасибо, сам вспомнил, а то посреди ночи голова уже не варит, не подумав, сразу вопросы задаю
localghost @localghost

И как-то никто, по-моему, даже не намекнул на суть.
КМК, не хватает понимания, что (обычно) нельзя вызвать просто метод класса. Класс — это шаблон, по которому создаются объекты. Чтобы вызвать «метод класса», надо создать объект этого класса, а потом обратиться к объекту, мол, дорогой, вызови-ка свой метод такой-то.

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

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