La liaison ultérieure fait référence à la liaison en fonction du type de l'objet à l'exécution, également connu sous le nom de liaison dynamique ou de liaison d'exécution. Pour implémenter la liaison tardive, un mécanisme doit être pris en charge par cela afin que le type d'objet puisse être jugé au moment de l'exécution, et la surcharge d'appel est supérieure à celle de la liaison précédente.
Les méthodes statiques et les méthodes finales en Java sont des liaisons précoces. D'autres méthodes à l'exception des méthodes statiques et des méthodes finales (privé appartiennent aux méthodes finales) sont ultérieures de liaison et peuvent déterminer le type de l'objet pour la liaison pendant l'exécution. La procédure de vérification est la suivante:
La copie de code est la suivante:
base de classe
{
// Variables membres, les sous-classes ont également le même nom de variable de membre
Test de chaîne publique = "champ de base";
// Méthodes statiques, les sous-classes ont également des méthodes statiques avec la même signature
public static void staticMethod ()
{
System.out.println ("Base staticMethod ()");
}
// Les sous-classes remplaceront cette méthode
public void notstatitMethod ()
{
System.out.println ("Base NotstaticMethod ()");
}
}
La classe publique dérive la base
{
Public String test = "Derive Field";
public static void staticMethod ()
{
System.out.println ("dériver staticMethod ()");
}
@Outrepasser
public void notstatitMethod ()
{
System.out.println ("dériver notstaticMethod ()");
}
// Sortie de la valeur de la variable membre et vérifiez qu'il s'agit d'une liaison précédente.
Public Static Void TestFieldBind (base de base)
{
System.out.println (base.test);
}
// Méthode statique, vérifiez qu'il s'agit d'une liaison précédente.
Public Static Void TestStaticMethodbind (base de base)
{
// Le test de méthode statique () de la base de type doit être accessible de manière statique
// Il est plus raisonnable d'utiliser la base.test ().
base.staticMethod ();
}
// Appel des méthodes non statiques et vérifiez qu'ils sont des liaisons tardives.
public statique void testNotstaticMethodbind (base de base)
{
base.notstaticMethod ();
}
public static void Main (String [] args)
{
Derive d = new Derive ();
TestFieldBind (D);
TestStaticMethodbind (D);
testNotstaticMethodbind (d);
}
}
/ * Sortie du programme:
Champ de base
Base staticMethod ()
Dériver notstaticMethod ()
* /