Maison  >  Article  >  Java  >  Explication détaillée de l'accès aux champs et méthodes statiques sans polymorphisme en Java

Explication détaillée de l'accès aux champs et méthodes statiques sans polymorphisme en Java

黄舟
黄舟original
2017-10-10 10:19:541745parcourir

L'éditeur suivant vous proposera un article basé sur le fait que l'accès aux champs et méthodes statiques en Java n'a pas de polymorphisme (explication avec exemples). L'éditeur le trouve plutôt bon, je vais donc le partager avec vous maintenant et le donner comme référence pour tout le monde. Suivons l'éditeur et jetons un coup d'œil.

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) est déterminée lors de la phase de compilation du programme. Type d'objet référencé

3. La liaison d'exécution (liaison dynamique) signifie déterminer le type réel de l'objet référencé lors de l'exécution et appeler sa méthode correspondante en fonction de son type réel

4 . À l'exception des méthodes statiques et des méthodes finales (les méthodes privées sont des méthodes finales), toutes les autres méthodes sont à liaison tardive. Toutes les méthodes en Java réalisent le polymorphisme grâce à la liaison dynamique

5. n'est pas polymorphe


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 référence Super, toute opération d'accès au champ sera une analyse du compilateur, elle n'est donc pas polymorphe. 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 par héritage, accès par méthodes d'appel

6. Accéder à un champ statique La méthode n'est pas polymorphe et n'est pas associée à 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!

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