Comment appeler une méthode en java?


Comment appeler une méthode, qui est dans une autre classe du même package en java? Ce que je sais, c'est qu'en utilisant un objet, nous pouvons appeler une méthode d'une classe différente. Existe-t-il un autre moyen d'appeler une méthode de classe différente?

Author: Epic, 2010-09-15

8 answers

Créer une instance de classe B:

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

Ou définir une méthode statique dans la classe B:

class B
{
 static void staticMethod();
}

Et appelez-le comme ceci:

B.staticMethod();
 8
Author: Gustavo Puma, 2010-09-14 23:29:47

Méthodes sont méthodes de l'objet ou les méthodes de la classe.

Méthodes de l'Objet:, il s'applique sur un objet. Vous devez utiliser une instance:

instance.method(args...);

Les méthodes de Classe:, il s'applique sur une classe. Il n'a pas une instance implicite. Vous devez utiliser la classe elle-même. C'est plus comme la programmation procédurale.

ClassWithStaticMethod.method(args...);

La Réflexion

Avec reflection, vous avez une API pour accéder par programme aux méthodes, qu'elles soient object ou class méthode.

Méthodes d'instance: methodRef.invoke(instance, args...); Méthodes de classe: methodRef.invoke(null, args...);

 4
Author: helios, 2010-09-14 23:27:55

Si vous définissez la méthode comme statique, vous pouvez l'utiliser sans instancier la classe en premier, mais vous n'avez pas non plus les variables d'objet disponibles.

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

Dans ce cas, vous pourriez l'appeler avec Foo.Bar().

 3
Author: halfdan, 2010-09-14 23:27:25

D'après les notes de Fred Swartz (fredosaurus) :

, Il existe deux types de méthodes.

  • Les méthodes d'instance sont associées à un objet et utilisent les variables d'instance de cet objet. C'est la valeur par défaut.

  • Les méthodes statiques n'utilisent aucune variable d'instance d'un objet de la classe dans laquelle elles sont définies. Si vous définissez une méthode pour être statique, vous recevrez un message grossier par le compilateur si vous essayez d'accéder toutes les variables d'instance. Vous pouvez accéder à des variables statiques, mais à l'exception des constantes, cela est inhabituel. Les méthodes statiques prennent généralement toutes les données des paramètres et calculent quelque chose à partir de ces paramètres, sans référence aux variables. Ceci est typique des méthodes qui font une sorte de calcul générique. Les nombreuses méthodes utilitaires de la classe prédéfinie Math en sont un bon exemple.

Qualification d'un appel statique

En dehors de la classe de définition, une instance la méthode est appelée en la préfixant avec un objet, qui est ensuite passé en tant que paramètre implicite à la méthode d'instance, par exemple, inputTF.setText("");

Une méthode statique est appelé en préfixant avec un nom de classe, par exemple, Math.max(i,j);. Curieusement, il peut aussi être qualifié avec un objet, qui sera ignoré, mais la classe de l'objet sera utilisé.

Exemple

Voici une méthode statique typique:

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

Les seules données que cette méthode utilise ou modifie proviennent de paramètres (ou locaux variables bien sûr).

Pourquoi déclarer une méthode static

La méthode mean() ci-dessus fonctionnerait tout aussi bien si elle n'était pas déclarée statique, tant qu'elle était appelée à partir de la même classe. S'il est appelé de l'extérieur de la classe et qu'il n'a pas été déclaré statique, il devrait être qualifié (inutilement) avec un objet. Même lorsqu'il est utilisé dans la classe, il y a de bonnes raisons de définir une méthode comme statique quand elle pourrait l'être.

  • Documentation. Quelqu'un qui voit ça une méthode est statique sais comment l'appeler (voir ci-dessous). De même, tout programmeur regardant le code saura qu'une méthode statique ne peut pas interagir avec les variables d'instance, ce qui facilite la lecture et le débogage.
  • Efficacité. Un compilateur produira généralement du code légèrement plus efficace car aucun paramètre d'objet implicite ne doit être transmis à la méthode.

Appel de méthodes statiques

Il y a deux cas.

Appelé de la même classe

Il suffit d'écrire le nom de la méthode statique. Par exemple:

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

Appelé depuis l'extérieur de la classe

Si une méthode (statique ou instance) est appelée à partir d'une autre classe, quelque chose doit être donné avant le nom de la méthode pour spécifier la classe où la méthode est définie. Par exemple methods, c'est l'objet auquel la méthode accédera. Pour les méthodes statiques, le nom de la classe doit être spécifié. Par exemple:

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

Si un objet est spécifié avant cela, la valeur de l'objet sera ignorée et la classe de l'objet sera utilisé.

Accès aux variables statiques

Bien qu'une méthode static ne puisse pas accéder aux variables d'instance, elle peut accéder aux variables static. Une utilisation commune des variables statiques est de définir des "constantes". Les exemples de la bibliothèque Java sont Math.PI ou Color.RED. Ils sont qualifiés avec le nom de classe, donc vous savez qu'ils sont static. Toute méthode, static ou non, peut accéder aux variables static. Les variables d'instance sont accessibles uniquement par les méthodes d'instance.

Appel alternatif

Ce qui est un peu particulier, et non recommandé, c'est qu'un objet d'une classe peut être utilisé à la place du nom de classe pour accéder aux méthodes statiques. C'est mauvais car cela donne l'impression que certaines variables d'instance de l'objet sont utilisées, mais ce n'est pas le cas.

 2
Author: Jaken Herman, 2018-01-17 15:26:10

Si c'est une méthode statique, vous pouvez l'appeler en utilisant le nom de la classe à la place d'un objet.

 1
Author: AaronM, 2010-09-14 23:26:55

Vous pouvez créer une méthode statique ou utiliser l'autre classe en tant que membre de votre classe appelant la fonction dans le constructeur.

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

      public callOtherClassMethod() {
         oc.otherClassMethod();
       }
    }
 1
Author: It Grunt, 2010-09-14 23:28:12

Faites-le dans ce format:

classmehodisin.methodname();

Par exemple:

MyClass1.clearscreen();

J'espère que cela a aidé.` Remarque:La méthode doit être statique.

 0
Author: Epic, 2015-01-10 07:21:28

En appelant la méthode

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);
    }
}
 -1
Author: Pavan Kumar, 2018-01-17 08:36:40