Ejemplo n.º 1
0
        public static void noVirtualDemo()
        {
            // minden metodus a NoVirtualItem osztalyban fut (egyertelmu)
            System.Console.WriteLine("\n### (1) NoVirtualItem iItem = new NoVirtualItem()");
            NoVirtualItem iItem = new NoVirtualItem("AlmaItem", 10, 1000);
            System.Console.WriteLine(iItem.play()); // Play NoVirtualItem
            System.Console.WriteLine(iItem.handle()); // Play NoVirtualItem

            // A play() egyertelmuen a NoVDVD-ben fut, de a handle() esete mar nem ennyire egyertelmu
            System.Console.WriteLine("\n### (2) NoVDVD iDVD = new NoVDVD()");
            NoVDVD iDVD = new NoVDVD("AlmaDVD", 20, 500.0, DVDType.LayerOne);
            System.Console.WriteLine(iDVD.play()); // Play NoVDVD --> DVD

            // Itt a Play a NoVirtualItem osztalyban fut! OK: a handle() altel hivott play() metodust eloszor a
            // NoVirtualItem osztalyban talalja meg a fordito, mert a handle() metodus is ott van!
            System.Console.WriteLine(iDVD.handle()); // Play NoVirtualItem (es igy nem jelenik meg a DiskType..)

            // minden metodus a NoVirtualItem osztalyban fut --> ez a nem virtualis metodusok hasznlatanak egyik legnagyobb hatranya
            // egyetlen elonye: gyorsabb mint a virtualis metodusok hivasa (gyorsabb, mert kiszamithato, egyertelmu a forditonak. Embernek mar kevesbe..)
            System.Console.WriteLine("\n### (3) NoVirtualItem iItemDVD = new NoVDVD()");
            NoVirtualItem iItemDVD = new NoVDVD("AlmaDVD", 20, 500.0, DVDType.LayerOne);
            System.Console.WriteLine(iItemDVD.play()); // Play NoVirtualItem
            System.Console.WriteLine(iItemDVD.handle()); // Play NoVirtualItem

            System.Console.WriteLine("\n### (4) NoVDVD iDVD = new NoVDVD() --> NoVirtualItem");
            Program.noVirtualPrint(iDVD);
            // igy ugyanazt erjuk el, mint a 3. esetben
        }