Как вызвать метод в java?
Как вызвать метод, который находится в другом classе того же пакета в java? Я знаю, что с помощью объекта мы можем вызвать метод из другого classа. Есть ли другой способ вызова метода другого classа?
- В чем разница функций и методов в Go?
- Неправильно ли использовать устаревшие методы или classы в Java?
- Как перехватить вызов метода со стандартными функциями Java (без AspectJ и т. Д.)?
- Сравните два объекта с операторами .equals () и ==
- В чем разница между методами classа и экземпляра?
- Поднять события C # с помощью метода расширения - это плохо?
- Общий метод Выполняется со временем выполнения
- Преимущество методов set и get vs public variable
Создайте экземпляр classа B:
B b=new B(); b.method();
или определить статический метод в classе B:
class B { static void staticMethod(); }
и назовите его так:
B.staticMethod();
Методы – это методы объекта или методы classа .
Методы объекта: он применяется к объекту. Вы должны использовать экземпляр:
instance.method(args...);
Методы classа: применяется к classу. У него нет неявного экземпляра. Вы должны использовать сам class. Это больше похоже на процедурное программирование.
ClassWithStaticMethod.method(args...);
reflection
С рефлексией у вас есть API для программного доступа к методам, будь то методы classа или объекта.
Методы экземпляра: methodRef.invoke(instance, args...);
Методы classа: methodRef.invoke(null, args...);
Если вы определяете метод как статический, вы можете использовать его без создания экземпляра classа, но тогда у вас также нет доступных переменных объекта.
public class Foo { public static String Bar() { return "bla"; } }
В этом случае вы можете назвать это с помощью Foo.Bar()
.
Из заметок Фреда Сварца (fredosaurus) :
Существует два типа методов.
-
Методы экземпляра связаны с объектом и используют переменные экземпляра этого объекта. Это значение по умолчанию.
-
Статические методы не используют переменные экземпляра любого объекта classа, в котором они определены. Если вы определяете статический метод, вам будет предоставлено грубое сообщение компилятором, если вы попытаетесь получить доступ к любым переменным экземпляра. Вы можете получить доступ к статическим переменным, но за исключением констант, это необычно. Статические методы обычно берут все данные из параметров и вычисляют что-то из этих параметров без ссылки на переменные. Это типично для методов, которые выполняют какой-то общий расчет. Хорошим примером этого являются многие методы полезности в предопределенном classе
Math
.
Квалификация статического вызова
Извне определяющего classа метод экземпляра вызывается путем префикса его объектом, который затем передается как неявный параметр в метод экземпляра, например, inputTF.setText("");
Статический метод вызывается путем префикса его именем classа, например Math.max(i,j);
, Любопытно, что он также может быть квалифицирован с помощью объекта, который будет игнорироваться, но будет использоваться class объекта.
пример
Вот типичный статический метод:
class MyUtils { . . . //================================================= mean public static double mean(int[] p) { int sum = 0; // sum of all the elements for (int i=0; i
Единственные данные, которые этот метод использует или изменяет, - это параметры (или, конечно, локальные переменные).
Зачем объявлять метод static
Вышеуказанный метод mean()
будет работать так же хорошо, если он не был объявлен static, если он был вызван из одного classа. Если вызывается извне classа и он не был объявлен статическим, он должен быть квалифицирован (бесполезно) с объектом. Даже если они используются в classе, есть веские причины для определения метода как статического, когда это возможно.
- Документация. Любой, кто видит, что метод статический, будет знать, как его вызвать (см. Ниже). Аналогично, любой программист, смотрящий на код, будет знать, что статический метод не может взаимодействовать с переменными экземпляра, что упрощает чтение и отладку.
- Эффективность. Компилятор обычно создает несколько более эффективный код, потому что не должен передаваться неявный объектный параметр.
Вызов статических методов
Есть два случая.
Вызывается из одного classа
Просто напишите имя статического метода. Например:
// Called from inside the MyUtils class double avgAtt = mean(attendance);
Вызывается извне classа
Если метод (статический или экземпляр) вызывается из другого classа, перед именем метода следует указать что-то, чтобы указать class, в котором этот метод определен. Например, методы, это объект, к которому будет обращаться метод. Для статических методов должно быть указано имя classа. Например:
// Called from outside the MyUtils class. double avgAtt = MyUtils.mean(attendance);
Если перед ним задан объект, значение объекта будет игнорироваться и будет использоваться class объекта.
Доступ к статическим переменным
Altho static
метод не может получить доступ к переменным экземпляра, он может обращаться к static
переменным. Обычным использованием статических переменных является определение «констант». Примерами из библиотеки Java являются Math.PI
или Color.RED
. Они квалифицируются с именем classа, поэтому вы знаете, что они static
. Любой метод, static
или нет, может обращаться к static
переменным. К переменным экземпляра можно обращаться только методом экземпляра.
Альтернативный звонок
Что немного странно и не рекомендуется, так это то, что объект classа может использоваться вместо имени classа для доступа к статическим методам. Это плохо, потому что создается впечатление, что используются некоторые переменные экземпляра в объекте, но это не так.
Если это статический метод, вы можете вызвать его, используя имя classа вместо объекта.
Вы можете либо создать статический метод, либо использовать другой class в качестве члена вашего classа, вызывающего функцию в конструкторе.
public class aClass { private SomeOtherClass oc; public class aClass( SomeOtherClass otherClass) { oc = otherClass; } public callOtherClassMethod() { oc.otherClassMethod(); } }
Сделайте это в этом формате:
classmehodisin.methodname();
Например:
MyClass1.clearscreen();
Надеюсь, это помогло. Примечание: метод должен быть статическим.
Вызов метода
public class a { void sum(int i,int k) { System.out.println("THe sum of the number="+(i+k)); } } class b { public static void main(String[] args) { a vc=new a(); vc.sum(10 , 20); } }