Ejemplo n.º 1
0
        static void Main(string[] args)
        {
            Kutya kutya = new Kutya(); //A függvényeket a kutya "felől" hívom


            kutya.Koszon();
            kutya.Enekel();
            kutya.Beszel();


            //Ebben az esetben a háziállat felől hívom a függvényeket. Lehet a Haziallat típusba new Kutya-t tenni hiszen abból származik
            Haziallat kutya2 = new Kutya();


            kutya2.Koszon();
            kutya2.Enekel();
            kutya2.Beszel();


            //direktben ki tudok jelölni egy felületet, most a Haziallat tipusu változónak a Kutya felületét használom
            ((Kutya)kutya2).Koszon();
            ((Kutya)kutya2).Enekel();
            ((Kutya)kutya2).Beszel();

            var haziallat2 = new Haziallat();
            // ((Kutya)haziallat2).Beszel(); invalid cast kivétel

            //Hogyan érdemes típuskonverziót csináltatni
            //Az object minden objektum ősosztálya, így bele lehet tenni bármilyen objektumot

            object o = kutya;

            //Kivenni hogy lehet? Ez a leggyorsabb
            if (o is Kutya)
            {
                Console.WriteLine("Ez egy kutya");
                Kutya k = (Kutya)o;
            }

            //as kulcsszóval konvertálok
            Kutya k2 = o as Kutya;

            if (k2 != null)
            {//sikerült a konverzió
                Console.WriteLine("Ő egy kutya");
                Kutya k = (Kutya)o;
            }
            //try catch-el mivel elszállhat a konvertálási kísérlet ez a leglassabb módszer

            try
            {
                Kutya k3 = (Kutya)o;
            }
            catch (Exception)
            {
                Console.WriteLine("Elszállt");
            }

            Console.ReadLine();
        }
Ejemplo n.º 2
0
        static void Main(string[] args)
        {
            var haziallat  = new Haziallat();
            var haziallat2 = new Haziallat();

            if (haziallat == haziallat2)
            {
                Console.WriteLine("Egyezőek");
            }
            else
            {
                Console.WriteLine("Nem azonosak");
            }

            //Megtöri az egységbezárást
            haziallat2.LabSzam = 3;

            //egységbe tudom zárni az információt
            haziallat2.mennyiLab();
            haziallat2.HanySzeme   = 12;
            haziallat2.HanyFogaVan = 34;
            var szemek = haziallat2.HanySzeme;

            //érték szerinti átadás
            var lepes = 5;

            haziallat.LepjenEnnyit(lepes);

            //referencia átadása
            haziallat.LepjenEnnyitR(ref lepes);
            Console.WriteLine(lepes);

            haziallat.AllatNeve();


            Console.ReadKey();
        }
Ejemplo n.º 3
0
        static void Main(string[] args)
        {
            // A függvények a kutya oldaláról vannak meghívva
            Kutya kutya = new Kutya();

            kutya.Koszon();
            kutya.Enekel();
            kutya.Beszel();


            // eredmény:

            /*   A háziállat köszön.
             *   A kutya enekel.
             *   A kutya beszél.*/

            Console.WriteLine();

            //A függvényeket a háziállat felől is meghívhatjuk
            Haziallat haziallat = new Kutya();

            haziallat.Koszon();
            haziallat.Enekel();
            haziallat.Beszel();

            //eredmény
            //A háziállat köszön.
            //A háziállat énekel.
            //A kutya beszél.



            Console.WriteLine();

            //Direktben ki tudok jelölni felületet
            //A Haziallat tipusú változónak veszem a Kutya felületét
            // így ismét a kutya felől közelítek

            ((Kutya)haziallat).Koszon();
            ((Kutya)haziallat).Enekel();
            ((Kutya)haziallat).Beszel();

            Console.WriteLine();

            //eredmény ugyanaz mint először
            //A háziállat köszön.
            //A kutya enekel.
            //A kutya beszél.
            // ez a castolás ezt nem ellenőrzi a fordító ha olyan castolást csinálunk ami nem lehetséges az futásidejű hibát generál

            // var haziallat2 = new Haziallat();
            // ((Kutya)haziallat2).Beszel(); //mivel a haziallat2 egy Haziallat tipusú objektum ezért neki nincs Kutya felülete

            // Hogy érdemes típuskonverziót végezni?
            // Az object osztály minden osztály ősosztálya minden objektum beletehető egy ijen típusú változóba

            object o = new Kutya();

            //o.Beszel(); nincs ilyen metódusa
            //de hogy lehet innen kivenni?

            //ellenpróba ha az o-ba háziállatot teszek mivel objektum típusú ezért bármilyen osztály objektumával felülírható
            //o = new Haziallat();

            ObjectbolKutya1(o);

            ObjectbolKutya2(o);

            ObjectbolKutya3(o);

            //  nézzük meg a teljesítményeket
            // létrehozunk egy objektumtömböt feltöltjük kutyákkal és házállatokkal és megnézzük melyik függvény a gyorsabb
            var olist = new object[1000];

            for (int i = 0; i < 1000; i++)
            {
                if (i % 2 == 0)
                {
                    olist[i] = new Haziallat();
                }
                else
                {
                    olist[i] = new Kutya();
                }
            }
            var sw = new System.Diagnostics.Stopwatch();

            sw.Start();
            for (int i = 0; i < 1000; i++)
            {
                ObjectbolKutya1(olist[i]);
            }
            Console.WriteLine("1-es módszer: {0}", sw.ElapsedTicks);

            sw.Restart();
            for (int i = 0; i < 1000; i++)
            {
                ObjectbolKutya2(olist[i]);
            }
            Console.WriteLine("2-es módszer: {0}", sw.ElapsedTicks);

            sw.Restart();
            for (int i = 0; i < 1000; i++)
            {
                ObjectbolKutya3(olist[i]);
            }
            Console.WriteLine("3-as módszer: {0}", sw.ElapsedTicks);

            Console.ReadKey();
        }