Maison >Java >javaDidacticiel >Explication détaillée de la différence entre les méthodes statiques Java et les méthodes d'instance
La différence entre les méthodes statiques et les méthodes d'instance se reflète principalement sous deux aspects :
Lors de l'appel de méthodes statiques en externe, vous pouvez utiliser "nom de classe.nom de méthode" ou "nom d'objet".méthode nom". Les méthodes d'instance n'ont que cette dernière méthode. En d’autres termes, l’appel de méthodes statiques ne nécessite pas la création d’un objet.
Lorsque des méthodes statiques accèdent aux membres de cette classe, elles ne sont autorisées à accéder qu'aux membres statiques (c'est-à-dire aux variables membres statiques et aux méthodes statiques), mais ne sont pas autorisées à accéder aux variables membres d'instance et aux méthodes d'instance ; les méthodes n’ont pas cette limite.
Les exemples suivants illustrent cette différence.
1. Exemple d'appel de méthodes statiques
//-----------hasStaticMethod.java----------------- public class hasStaticMethod{ //定义一个静态方法 public static void callMe(){ System.out.println("This is a static method."); } }
Le programme suivant utilise deux formulaires pour appeler des méthodes statiques.
//-----------invokeStaticMethod.java----------------- public class invokeStaticMethod{ public static void main(String args[]){ hasStaticMethod.callMe(); //不创建对象,直接调用静态方法 hasStaticMethod oa = new hasStaticMethod(); //创建一个对象 oa.callMe(); //利用对象来调用静态方法 } }
Le programme appelle la méthode statique deux fois, les deux sont autorisés. Le résultat du programme est le suivant :
Il s'agit d'une méthode statique.Il s'agit d'une méthode statique. .
Autoriser l'appel de méthodes statiques sans créer d'objet est un moyen pour Java de réduire les problèmes rencontrés par les programmeurs lors de l'appel de certaines méthodes courantes, et permet aux programmeurs d'utiliser des méthodes de la manière traditionnelle d'utiliser des fonctions. en langage C. Un exemple typique est l'utilisation de "Math.ramdon()" dans certains programmes précédents pour obtenir des nombres aléatoires.
Un autre représentant typique est l'outil de traitement de tableaux Arrays
2 Exemple d'accès par méthode statique aux variables membres
//-----------accessMember.java----------------- class accessMember{ private static int sa; //定义一个静态成员变量 private int ia; //定义一个实例成员变量 //下面定义一个静态方法 static void statMethod(){ int i = 0; //正确,可以有自己的局部变量sa = 10; //正确,静态方法可以使用静态变量 otherStat(); //正确,可以调用静态方法 ia = 20; //错误,不能使用实例变量 insMethod(); //错误,不能调用实例方法 } static void otherStat(){} //下面定义一个实例方法 void insMethod(){ int i = 0; //正确,可以有自己的局部变量 sa = 15; //正确,可以使用静态变量 ia = 30; //正确,可以使用实例变量 statMethod(); //正确,可以调用静态方法 } }
<.>Cet exemple peut en fait être résumé en une phrase : les méthodes statiques ne peuvent accéder qu'aux membres statiques, et les méthodes d'instance peuvent accéder aux membres statiques et aux instances. La raison pour laquelle les méthodes statiques ne sont pas autorisées à accéder aux variables membres d'instance est que les variables membres d'instance appartiennent à un certain objet et que l'objet n'existe pas nécessairement lorsqu'une méthode statique est exécutée. De même, étant donné que les méthodes d'instance peuvent accéder aux variables membres d'instance, si une méthode statique est autorisée à appeler des méthodes d'instance, elle sera indirectement autorisée à utiliser des variables membres d'instance, elle ne pourra donc pas appeler de méthodes d'instance. Pour la même raison, le mot clé this ne peut pas être utilisé dans les méthodes statiques. La méthode