Polymorphisme est un concept très important dans orienté objet, l'objet multi-états principalement dans deux aspects:
- méthode surchargée override
- objet polymorphisme
objets Polymorphisme sont divisés en deux types:
- Upcast: objet sous-classe - l'objet de la classe parent
- Abattu: l'objet parent - objet sous-classe
Objet transition vers le haut, le programme automatiquement. Abattu sous - classe doit spécifier explicitement le type de transition. Le format est le suivant:
Objet upcast: 父类 父类对象 = 子类实例;
Objet baissés: 子类 子类对象 = (子类)父类实例;
Cas upcast Objet: La
définition de la classe parente:
public class Father {
public void fun1(){
System.out.println("father`s method fun1");
}
public void fun2(){
System.out.println("father's method fun2");
}
}
sous-classe définie
public class Son extends Father {
@Override
public void fun1() {
System.out.println("son's method fun1 ");
}
public void fun3(){
System.out.println("son's method fun3");
}
}
Test de transition vers le haut
@Test
public void test() {
Son son = new Son();
Father father = son;
father.fun1();
}
résultat du test:
La méthode de fils fun1
Analyse:
Bien que les appels de méthode Fun1 père, mais appelle en fait fun1 pour les sous - classes. C'est, lorsque l'objet après la transition se produit, appelez la méthode doit être remplacée par les sous - classes. Mais le père ne définit pas les méthodes fils d'appel de classe fun3. Si vous voulez la méthode mise au point de fun3, il y a des cas de sous - classes doivent être appelés.
Objet baissés:
ou utiliser les cas de test ci - dessus:
@Test
public void test2() {
Father father = new Son(); //向上转型
Son son = (Son) father; //向下转型
son.fun1();
son.fun2();
son.fun3();
}
résultat:
méthode fun1 de fils
méthode de père fun2
méthode de fils de fun3
Une chose à noter est: le moût de première transformation baissés avant.