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