Unity 3D Game Engine – JavaScript – Overriding
Overriding è una pratica che consente di sovrascrivere un metodo della classe padre con un metodo della classe figlia.
Fruit Class
#pragma strict public class Fruit { public function Fruit () { Debug.Log("1st Fruit Constructor Called"); } //Overriding members happens automatically in //Javascript and doesn't require additional keywords public function Chop () { Debug.Log("The fruit has been chopped."); } public function SayHello () { Debug.Log("Hello, I am a fruit."); } }
Apple Class
#pragma strict public class Apple extends Fruit { public function Apple () { Debug.Log("1st Apple Constructor Called"); } //Overriding members happens automatically in //Javascript and doesn't require additional keywords public function Chop () { super.Chop(); Debug.Log("The apple has been chopped."); } public function SayHello () { super.SayHello(); Debug.Log("Hello, I am an apple."); } }
FruitSalad Class
#pragma strict function Start () { var myApple = new Apple(); //Notice that the Apple version of the methods //override the fruit versions. Also notice that //since the Apple versions call the Fruit version with //the "base" keyword, both are called. myApple.SayHello(); myApple.Chop(); //Overriding is also useful in a polymorphic situation. //Since the methods of the Fruit class are "virtual" and //the methods of the Apple class are "override", when we //upcast an Apple into a Fruit, the Apple version of the //Methods are used. var myFruit = new Apple(); myFruit.SayHello(); myFruit.Chop(); }
Come funziona?
1. Fruit Class
– una classe pubblica Fruit con le funzioni Fruit() – Chop() – SayHello()
2. Apple Class
– classe figlia di Fruit con le funzioni
– Apple()
– Chop()-> super.Chop()
– SayHello()-> super.SayHello()
3. FruitSalad Class
– la funzione Start() si avvia la caricamento dello script
– richiama Apple().SayHello() e Apple().Chop() -> che vanno in ovverride su Fruit().SayHello() e Fruit().Chop()