Maison >Java >javaDidacticiel >Accès aux champs et méthodes statiques en Java sans compréhension polymorphe
1. L'association d'un appel de méthode au corps de la méthode est appelée
2. La liaison au moment de la compilation (statique) détermine le type de l'objet référencé lors de la phase de compilation du programme
3 . La liaison d'exécution (liaison dynamique) fait référence à la détermination du type réel de l'objet référencé pendant l'exécution et à l'appel de sa méthode correspondante en fonction de son type réel
4. (Les méthodes privées sont des méthodes finales), toutes les autres méthodes sont à liaison tardive et toutes les méthodes en Java obtiennent un polymorphisme grâce à une liaison dynamique
5. Le comportement d'accès à un certain domaine n'est pas avec le polymorphisme
package polymorphism; class SuperField { public int field = 1; public int getField() { return field; } } class SubField extends SuperField { public int field = 2; public int getField() { return field; } public int getSuperField() { return super.field; } } public class FieldPolymorphism { public static void main(String[] args) { SuperField sup = new SubField(); System.out.println("sup.field = " + sup.field + ", sup.getField() = " + sup.getField()); SubField sub = new SubField(); System.out.println("sub.field = " + sub.field + ", sub.getField() = " + sub.getField() + ", sub.getSuperField() = " + sub.getSuperField()); } }
Résultat de sortie :
sup.field = 1, sup.getField() = 2 sub.field = 2, sub.getField() = 2, sub.getSuperField() = 1
Lorsque l'objet SubField est converti en une super référence, toute opération d'accès au domaine sera compilée par Elle est analysée par le processeur, il n'est donc pas polymorphe. SubField contient en fait deux champs appelés champs : le sien et hérité de SuperField
Habituellement, le champ est défini sur privé et n'est pas accessible directement ou hérité, accessible en appelant une méthode.
6. L'accès à une méthode statique n'est pas polymorphe et n'est pas associé à un seul objet
package polymorphism; class Super { public static String staticMethod() { return "Super staticMethod()"; } } class Sub extends Super { public static String staticMethod() { return "Sub staticMethod()"; } } public class StaticPolymorphism { public static void main(String[] args) { Super sup = new Sub(); System.out.println(sup.staticMethod()); System.out.println(Sub.staticMethod()); } }
Résultat de sortie :
Super staticMethod() Sub staticMethod()
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!