De nombreux débutants ne seront peut-être pas capables de comprendre comment utiliser la méthode statique. Ici, je vais expliquer ma compréhension :
L'invocation de la méthode statique ne nécessite pas. la création d'objets de classe
Comme il n'est pas nécessaire de créer un objet, le mot-clé this n'est pas utilisé dans la méthode statique
Uniquement Les variables membres statiques et les méthodes statiques peuvent être appelées dans les méthodes statiques. Étant donné que les méthodes ordinaires doivent être appelées en créant des objets, cela entre en conflit avec les méthodes statiques
Les variables membres statiques et les méthodes statiques peuvent être appelées. dans les méthodes ordinaires, qui peuvent être directement transmises sous la forme de nom de classe.méthode statique Appelez le bloc de code statique
, qui est exécuté lorsque la classe est chargée et exécuté une seule fois
Maintenant que la théorie est terminée, regardons un exemple pratique :
class Person{ static{ System.out.println("person static"); } public Person(String str) { System.out.println("person "+str); } } public class Test { Person person = new Person("Test"); public Test() { System.out.println("test constructor"); } static{ System.out.println("test static 1"); } public static void main(String[] args) { new MyClass(); } static{ System.out.println("test static 2"); } } class MyClass extends Test { Person person = new Person("MyClass"); static{ System.out.println("myclass static"); } public MyClass() { System.out.println("myclass constructor"); } }
Devinez d'abord son résultat, puis comparez-le pour voir ce qui ne va pas et approfondissez votre compréhension
test static 1 test static 2 myclass static person static person Test test constructor person MyClass myclass constructor
Chargez d'abord la classe Test, qui contient Deux blocs de code statiques sont générés par ordre d'écriture : test statique 1, test statique 2
Dans la méthode principale, une nouvelle est ajoutée MyClass A ce moment, la classe MyClass est chargée Il y a aussi des blocs de code statiques dans la classe MyClass. la sortie est myclass static
La classe MyClass hérite de la classe Test et la classe Test a été chargée, le contenu du bloc de code statique ne sera pas. n'est plus affiché.
est chargé et la classe Test commence à être exécutée. La classe Person n'a pas encore été chargée lorsque Person person = new Person("Test") est exécuté. lors du chargement, on constate que la classe Person a également un bloc de code statique, puis en sortie person static
exécute le constructeur de Person, et en sortie person Test
Continuez à exécuter Test, entrez la méthode principale, new MyClass(), cependant MyClass hérite de la classe Test, exécutez d'abord le constructeur de la classe Test et affichez constructeur de test
Continuez à exécuter MyClass, Person person = new Person("MyClass"), exécutez la méthode de construction de classe Person et affichez person MyClass
Continuez à exécuter la méthode constructeur de MyClass et affichez constructeur myclass
Exécution terminée
Sur cette base, j'ai résumé la séquence d'exécution suivante :
Bloc de code statique——>Méthode de construction de la classe parent——>Méthode de construction de sous-classe
Lorsque la construction La méthode et le nouvel objet existent en même temps, la méthode de construction du nouvel objet est exécutée en premier. (À ce stade, veillez à ne pas créer de boucles imbriquées, provoquant un débordement de mémoire)
Articles connexes :
Une brève discussion sur l'ordre de chargement des classes et sous-classes parentes en Java
Héritage Java, si la sous-classe hérite du constructeur de la classe parent
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!