Upcast est une fonctionnalité qui permet à une sous-classe (classe enfant) d'agir implicitement comme une superclasse (classe parent).
Lors du développement, les changements de spécification sont inhérents. Si vous écrivez un programme en utilisant upcast au moment d'un tel changement de spécification, vous pouvez minimiser la réécriture du programme en raison du changement.
Permettez-moi de vous donner un exemple du programme.
Main.java
public class Main{
public static void main(String[] args){
Life_form life_form = new Life_form();
life_form.makeSound();
//Upcast
life_form = new Cat();
life_form.makeSound();
}
}
Life_form.java
//Classe parent
public class Life_form{
public void makeSound(){
System.out.println("???");
}
}
Cat.java
//Classe enfant
public class Cat extends Life_form{
@Override
public void makeSound(){
System.out.println("nyaa");
}
public void catPunch(){
System.out.println("Pain de chat");
}
}
Dog.java
//Il est utilisé dans la rubrique «Veuillez modifier les spécifications».
public class Dog extends Life_form {
@Override
public void makeSound(){
System.out.println("Kuhn!");
}
public void dogAttack(){
System.out.println("Mordant");
}
}
-La classe Life_form a une fonction makeSound. -La classe Cat hérite de la classe Lifeform et redéfinit (remplace) la fonction makeSound. -De plus, la classe Cat a une fonction limitée, la fonction catPunch, que la classe parent n'a pas.
La classe Dog est utilisée dans les éléments suivants, "Veuillez modifier les spécifications". Il est fait de la même manière que la classe Cat, remplace makeSound et a une attaque de chien limitée à la classe Dog.
Ce à quoi je veux que vous fassiez attention dans la classe principale
life_form = new cat();
J'essaie.
Assigner une classe enfant à une classe parent. C'est un upcast.
Le résultat de l'exécution est le suivant.
C'est un peu difficile à voir, mais vous pouvez voir que l'instance Cat makeSound () est appelée depuis life_form par upcasting.
En d'autres termes, la substance de life_form après
life_form = new Cat (); `` est une instance de Cat.
Maintenant, si vous êtes invité à changer l'instance Cat de ce programme en instance Dog, il vous suffit d'apporter les modifications suivantes.
life_form = new cat();
->life_form = new Dog();
Si l'upcast n'existait pas en tant que fonctionnalité, les changements seraient:
1er
life_form = new cat();
->Dog dog = new Dog();
2e
life_form.makeSound();
->```dog.makeSound();```
Tout d'abord, il est nécessaire de créer une instance avec le type Dog, et même là où il est utilisé, dog doit être utilisé.
Vous pourriez penser que cela ne changerait pas grand chose.
Mais c'est parce que c'est un très petit programme.
Plus le développement est important, plus il y a de changements et plus de changements.
Il est important de créer un programme résistant aux changements de spécifications. Et java a la capacité de le faire.
Je veux bien l'utiliser.
Recommended Posts