Example #1
0
        static void Main(string[] args)
        {
            IChien oChien1 = new Chien(1980, "Polo");

            oChien1.addPrenom("Polux").addComment("Un bon chienchien ce Polo/Polux").setPoids(30);

            IChien oChien2 = new Chien(1975, "Frigo");

            //oChien2.addPrenom("Frigolux").setPoids(60).addComment("Un peu frileux ce Frigololux!"); //OK
            //  La ligne CI-DESSOUS est acceptée CAR :
            // J'ai redéfini dans Chien, la méthode setPoids pour stipuler qu'elle retourne bien un IChien et NON plus un IAnimal !
            // Ainsi ce sera bien la méthode addComment de IChien et non IAnimal qui sera appelée, laquelle redéfinie, renvoie bien un IChien
            // et non pas un IAnimal ! ce qui permet enfin, d'avoir l'appel à addPrenom autorisé ! Car un IAnimal n'a pas
            //de méthode addPrenom, mais un IChien si !
            oChien2.setPoids(60).addComment("Un peu frileux ce Frigololux!").addPrenom("Frigolux"); //Interdit puisque addComment ne renvoie pas un IChien mais un IAnimal.


            oChien1.showData();                          //overridée simplement (même signature) (mais la parente doit être virtual).

            oChien2.merge(oChien1).addPrenom("Biloute"); //<<<<<<<<< Appel à merge de IChien ! car je l'ai surchargée !
            oChien2.showData();                          //overridée simplement (même signature) (mais la parente doit être virtual).


            Console.WriteLine("OK");
            Console.ReadKey();
        }
Example #2
0
        static void Main(string[] args)
        {
            IChien oChien1 = new Chien(1980, "Polo");
            oChien1.addPrenom("Polux").addComment("Un bon chienchien ce Polo/Polux").setPoids(30);

            IChien oChien2 = new Chien(1975, "Frigo");
            oChien2.addPrenom("Frigolux").setPoids(60).addComment("Un peu frileux ce Frigololux!");
            //La ligne CI-DESSOUS est acceptée CAR :
            // J'ai redéfini dans Chien, la méthode setPoids pour stipuler qu'elle retourne bien un IChien et NON plus un IAnimal !
            // Ainsi ce sera bien la méthode addComment de IChien et non IAnimal qui srea appelée, laquelle redéfinie, renvoie bien un IChien
            // et non pas un IAnimal ! ce qui permet enfin, d'avoir l'appel à addPrenom autorisé !
            oChien2.setPoids(60).addComment("Un peu frileux ce Frigololux!").addPrenom("Frigolux"); //Interdit puisque addComment ne renvoie pas un IChien mais un IAnimal.

            oChien1.showData();
            oChien2.merge(oChien1).addPrenom("Biloute"); //<<<<<<<<< Appel à merge, pour démontrer que je peux me servir de _merge() de la parente.
            oChien2.showData();
                       

            Console.WriteLine("OK");
            Console.ReadKey();
        }