Upcast ist eine Funktion, mit der eine Unterklasse (untergeordnete Klasse) implizit als Oberklasse (übergeordnete Klasse) fungieren kann.
In der Entwicklung sind Spezifikationsänderungen inhärent. Wenn Sie zum Zeitpunkt einer solchen Spezifikationsänderung ein Programm mit Upcast schreiben, können Sie das Umschreiben des Programms aufgrund der Änderung minimieren.
Lassen Sie mich Ihnen ein Beispiel aus dem Programm geben.
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
//Übergeordnete Klasse
public class Life_form{
public void makeSound(){
System.out.println("???");
}
}
Cat.java
//Kinderklasse
public class Cat extends Life_form{
@Override
public void makeSound(){
System.out.println("nyaa");
}
public void catPunch(){
System.out.println("Katzenbrot");
}
}
Dog.java
//Es wird im Artikel "Bitte ändern Sie die Spezifikationen" verwendet.
public class Dog extends Life_form {
@Override
public void makeSound(){
System.out.println("Kuhn!");
}
public void dogAttack(){
System.out.println("Beißen");
}
}
-Die Life_form-Klasse verfügt über eine makeSound-Funktion. -Die Cat-Klasse erbt die Lifeform-Klasse und definiert die makeSound-Funktion neu (überschreibt sie).
Die Hundeklasse wird in den folgenden Punkten verwendet: "Bitte ändern Sie die Spezifikationen". Es wird auf die gleiche Weise wie die Cat-Klasse erstellt, überschreibt makeSound und hat einen Hundeangriff, der auf die Dog-Klasse beschränkt ist.
Worauf Sie in der Hauptklasse achten sollen
life_form = new cat();
Ich versuche.
Zuweisen einer untergeordneten Klasse zu einer übergeordneten Klasse. Dies ist ein Upcast.
Das Ausführungsergebnis ist wie folgt.
Es ist etwas schwer zu erkennen, aber Sie können sehen, dass die Cat-Instanz makeSound () durch Upcasting von life_form aufgerufen wird.
Mit anderen Worten, der Körper von life_form nach `life_form = new Cat ();`
ist eine Instanz von Cat.
Wenn Sie nun aufgefordert werden, die Cat-Instanz dieses Programms in eine Dog-Instanz zu ändern, müssen Sie nur die folgenden Änderungen vornehmen.
life_form = new cat();
->life_form = new Dog();
Wenn der Upcast nicht als Feature vorhanden wäre, wären die Änderungen:
1
life_form = new cat();
->Dog dog = new Dog();
2 ..
life_form.makeSound();
->```dog.makeSound();```
Zunächst muss eine Instanz mit dem Hundetyp erstellt werden, und selbst dort, wo sie verwendet wird, muss der Hund verwendet werden.
Sie könnten denken, es würde sich nicht so viel ändern.
Aber das liegt daran, dass es ein sehr kleines Programm ist.
Je größer die Entwicklung, desto mehr Änderungen und desto mehr Änderungen.
Es ist wichtig, ein Programm zu erstellen, das gegenüber Spezifikationsänderungen resistent ist. Und Java hat die Fähigkeit dazu.
Ich möchte es gut nutzen.
Recommended Posts