2010-09-14 23 views
7

Cómo llamar a un método, que está en otra clase del mismo paquete en java? Lo que sé es que, usando un objeto, podemos llamar a un método de una clase diferente. ¿Hay alguna otra manera de llamar a un método de diferente clase?¿Cómo llamar a un método en Java?

+0

edición: enlace ya no es válida - Se ha modificado el enlace al tutorial de Java de Oracle. [Java Static Methods] (http://docs.oracle.com/javase/tutorial/java/javaOO/classvars.html) – Yeonho

Respuesta

1

Si se trata de un método estático, puede llamarlo utilizando el nombre de clase en lugar de un objeto.

3

Si define el método como estático, puede usarlo sin crear primero la clase, pero tampoco tiene las variables de objeto disponibles para su uso.

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

En ese caso, podría llamarlo con Foo.Bar().

4

Los métodos son métodos de objeto o métodos de clase.

Métodos del objeto: se aplica sobre un objeto. Usted tiene que utilizar una instancia:

instance.method(args...); 

Los métodos de clase: se aplica sobre una clase. No tiene una instancia implícita. Tienes que usar la clase en sí. Es más como programación de procedimientos.

ClassWithStaticMethod.method(args...); 

Reflexión

Con la reflexión que tiene una API para acceder mediante programación métodos, ya sean objeto o métodos de clase.

Los métodos de instancia: methodRef.invoke(instance, args...); métodos de clase: methodRef.invoke(null, args...);

1

puede crear un método estático o utilizar la otra clase como miembro de la clase llamada a la función en el constructor.

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

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

Crear una instancia de la clase B:

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

o definir un método estático de la clase B:

class B 
{ 
static void staticMethod(); 
} 

y llamar así:

B.staticMethod(); 
0

Hazlo en este formato:

classmehodisin.methodname();

Por ejemplo:

MyClass1.clearscreen();

espero que este helped.` Nota: El método debe ser estática.

2

De las Notas de Fred Swartz (fredosaurus):

Hay dos tipos de métodos.

  • métodos de instancia están asociadas con un objeto y el uso de las variables de instancia de ese objeto. Este es el predeterminado.

  • métodos
  • estáticas no utilizan las variables de instancia de un objeto de la clase que se definen en. Si se define un método para ser estática, se le dará un mensaje grosero por el compilador si intenta acceder a cualquier instancia variables. Puede acceder a variables estáticas, pero a excepción de las constantes, esto es inusual. Los métodos estáticos típicamente toman todos los datos de los parámetros y calculan algo de esos parámetros, sin referencia a las variables. Esto es típico de los métodos que hacen algún tipo de cálculo genérico. Un buen ejemplo de esto son los muchos métodos de utilidad en la clase predefinida Math.

de clasificación una llamada estática

Desde fuera de la clase que define, un método de instancia se llama prefijándolo con un objeto, que se hace pasar entonces como un parámetro implícito para el método de instancia, por ejemplo, inputTF.setText("");

Se llama a un método estático prefijándolo con un nombre de clase, por ejemplo, Math.max(i,j);. Curiosamente, también se puede calificar con un objeto, que se ignorará, pero se usará la clase del objeto.

Ejemplo

Aquí es un método estático típico:

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 
    . . . 
} 

Los únicos datos este método utiliza o cambios es a partir de parámetros (o variables locales, por supuesto).

Por qué declarar un método static

El mean() método anterior funcionaría igual de bien si no estaba declarado estática, siempre y cuando se llama desde dentro de la misma clase. Si se llama desde fuera de la clase y no se declaró estático, debería estar calificado (inútilmente) con un objeto. Incluso cuando se usa dentro de la clase, hay buenas razones para definir un método como estático cuando podría serlo.

  • Documentación. Cualquiera que vea que un método es estático sabrá cómo llamarlo (ver a continuación). De forma similar, cualquier programador que observe el código sabrá que un método estático no puede interactuar con las variables de instancia, lo que facilita la lectura y la depuración.
  • Eficiencia. Un compilador generalmente producirá código ligeramente más eficiente porque no se debe pasar ningún parámetro de objeto implícito al método.

llamar a métodos estáticos

Hay dos casos.

Llamado desde dentro de la misma clase

Sólo tiene que escribir el nombre del método estático. Por ejemplo:

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

Llamado desde fuera de la clase

Si un método (estática o instancia) se llama de otra clase, algo que se debe dar antes de que el nombre del método para especificar la clase en la que el método es definido. Por ejemplo, métodos, este es el objeto al que accederá el método. Para los métodos estáticos, se debe especificar el nombre de la clase. Por ejemplo:

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

Si se especifica un objeto antes de que el valor del objeto será ignorado y se utilizará la clase del objeto.

Acceso a las variables estáticas

Altho un método static no pueden acceder a las variables de instancia, se puede acceder static variables. Un uso común de variables estáticas es definir "constantes". Los ejemplos de la biblioteca de Java son Math.PI o Color.RED. Están calificados con el nombre de clase, para que sepa que son static. Cualquier método, static o no, puede acceder a las variables static. A las variables de instancia solo se puede acceder mediante métodos de instancia.

llamada alternativo

¿Qué es un poco peculiar, y no se recomienda, es que un objeto de una clase puede ser utilizado en lugar del nombre de la clase para tener acceso a los métodos estáticos. Esto es malo porque crea la impresión de que se usan algunas variables de instancia en el objeto, pero este no es el caso.

-1

Llamando al método

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

Al declarar una instancia de la clase, en el ejemplo se denomina'vc' y se invoca el método de la instancia. – bradbury9

Cuestiones relacionadas