Maison  >  Article  >  Java  >  Analyse du mot clé statique, de la classe parent et de l'ordre de chargement et d'exécution en Java

Analyse du mot clé statique, de la classe parent et de l'ordre de chargement et d'exécution en Java

php是最好的语言
php是最好的语言original
2018-08-06 11:09:382249parcourir

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

  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

  3. 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é.

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

  5. exécute le constructeur de Person, et en sortie person Test

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

  7. Continuez à exécuter MyClass, Person person = new Person("MyClass"), exécutez la méthode de construction de classe Person et affichez person MyClass

  8. Continuez à exécuter la méthode constructeur de MyClass et affichez constructeur myclass

  9. 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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn