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 }
public static void noVirtualPrint( NoVirtualItem item ) { System.Console.WriteLine(item.play()); System.Console.WriteLine(item.handle()); System.Console.WriteLine(); }