2010-09-14 2 views
7

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

+0

редактирования: ссылка больше не действительна - изменил ссылку на оракула Java Tutorial. [Статические методы Java] (http://docs.oracle.com/javase/tutorial/java/javaOO/classvars.html) – Yeonho

ответ

1

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

3

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

public class Foo { 
    public static String Bar() { 
     return "bla"; 
    } 
} 

В этом случае вы могли бы назвать его Foo.Bar().

4

Методы Методы объекта или методы класса.

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

instance.method(args...); 

методы Класс: он применяется по классу. У него нет неявного экземпляра. Вы должны использовать сам класс. Это больше похоже на процедурное программирование.

ClassWithStaticMethod.method(args...); 

Отражение

С отражением Вы состоите API для программного доступа к методам, будь то объект или методы класса.

Методы экземпляра: methodRef.invoke(instance, args...); методы Класс: methodRef.invoke(null, args...);

1

Вы можете создать статический метод или использовать другой класс в качестве члена вашего класса вызывающей функции в конструкторе.

public class aClass { 
     private SomeOtherClass oc; 
     public class aClass(SomeOtherClass otherClass) { 
     oc = otherClass; 
     } 

     public callOtherClassMethod() { 
     oc.otherClassMethod(); 
     } 
    } 
7

Создать экземпляр класса B:

B b=new B(); 
b.method(); 

или определить статический метод в классе B:

class B 
{ 
static void staticMethod(); 
} 

и назвать его так:

B.staticMethod(); 
0

Сделайте это в таком формате:

classmehodisin.methodname();

Например:

MyClass1.clearscreen();

Я надеюсь, что это helped.` Примечание: Метод должен быть статическим.

2

Из записок Фред Шварц (fredosaurus):

Есть два типа методов.

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

  • Статических методы использовать не переменный экземпляр любого объекта класса они определены. Если вы определяете метод, чтобы быть статическими, вы получите грубое сообщение компилятора, если вы пытаетесь получить доступ к любому экземпляру переменные. Вы можете получить доступ к статическим переменным, но за исключением констант, это необычно. Статические методы обычно берут все данные из параметров и вычисляют что-то из этих параметров без ссылки на переменные. Это типично для методов, которые выполняют какой-то общий расчет. Хорошим примером этого являются многие методы полезности в предопределенном классе Math.

Отборочные статический вызов

Извне класса, определяющего, метод экземпляра вызывается предваряя его с объектом, который затем передается в качестве неявного параметра метода экземпляра, например, inputTF.setText("");

Статический метод вызывается путем префикса его именем класса, например Math.max(i,j);. Любопытно, что он также может быть квалифицирован с помощью объекта, который будет игнорироваться, но будет использоваться класс объекта.

Пример

Вот типичный статический метод:

class MyUtils { 
    . . . 
    //================================================= mean 
    public static double mean(int[] p) { 
     int sum = 0; // sum of all the elements 
     for (int i=0; i<p.length; i++) { 
      sum += p[i]; 
     } 
     return ((double)sum)/p.length; 
    }//endmethod mean 
    . . . 
} 

Только данные использует этот метод или изменяется от параметров (или локальных переменных, конечно).

Почему объявить метод static

выше mean() метод будет работать так же хорошо, если он не был объявлен статическим, до тех пор, как она была вызвана из того же класса. Если вызывается извне класса и он не был объявлен статическим, он должен быть квалифицирован (бесполезно) с объектом. Даже если они используются в классе, есть веские причины для определения метода как статического, когда это возможно.

  • Документация. Любой, кто видит, что метод статический, будет знать, как его вызвать (см. Ниже). Аналогично, любой программист, смотрящий на код, будет знать, что статический метод не может взаимодействовать с переменными экземпляра, что упрощает чтение и отладку.
  • Эффективность. Компилятор обычно производит несколько более эффективный код, потому что не должен передаваться неявный объектный параметр.

Вызывать статические методы

Есть два случая.

Вызывается из того же класса

Просто напишите статическое имя метода. Например:

// Called from inside the MyUtils class 
double avgAtt = mean(attendance); 

Вызывается из вне класса

Если метод (статический или экземпляр) вызывается из другого класса, то должно быть дано перед именем метода указать класс, где этот метод определены. Например, методы, это объект, к которому будет обращаться метод. Для статических методов должно быть указано имя класса. Например:

// Called from outside the MyUtils class. 
double avgAtt = MyUtils.mean(attendance); 

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

Доступ статические переменные

Altho static метод не может получить доступ к переменным экземпляра, он может получить доступ static переменные. Обычным использованием статических переменных является определение «констант». Примеры из библиотеки Java: Math.PI или Color.RED. Они квалифицируются с именем класса, поэтому вы знаете, что они static. Любой метод, static или нет, может получить доступ к переменным static. К переменным экземпляра можно обращаться только методом экземпляра.

Альтернативный вызов

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

-1

с помощью вызова метода

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); 
    } 
} 
+0

Объявив экземпляр класса, в примере называется'vc 'и вызывая метод экземпляр. – bradbury9

Смежные вопросы