Esempio n. 1
0
        static void Implementowanie_Interferjsu_W_Sposób_Niejawny()
        {
            /* Jest to raczej nieprawidłowe zachowanie. Powinno się implementować w sposób jawny a w szczególności gdy nazwa metody się powtarza.
             * Klasa 'Kula' implementuje interfejs 'IRuch' oraz 'IOblicz' w sposób niejawny, przez co zawiera jedną implementacje metody 'ObliczDystandDo()' lecz definicja tej metody
             * znajduje się w obydwóch interfejsach. Domyślnie język C# nie dokonuje rozrożnienia, który interfejs jest implementowany przez daną metode.
             */

            Kula kula = new Kula();

            kula.ObliczDystansDo(new Kula());
            IOblicz obliczKula = kula;

            obliczKula.ObliczDystansDo(new Kula());
            IRuch ruchKuli = kula;

            ruchKuli.ObliczDystansDo(new Kula());
        }
Esempio n. 2
0
        static void Obiekty_Przypisane_Do_Typu_Interfejs()
        {
            /* Można przypisać obiekt implementujący dany interfejs do typu danego interfejsu w taki sam sposób jak w rodziale 12 do typu wyżej w hierarchi dziedziczenia.
             * Tak samo możliwe jest utworzenie metody akceptującej parametry typu interfejs. np.
             */

            Kula  kula     = new Kula();
            IRuch ruchKuli = kula;

            RuchBryly(ruchKuli, new PozycjaNaOsi(1, 2, 2));

            IRuch ruchKostki = new Kostka(1.1, 1.9, 2.9, new PozycjaNaOsi(1, 1, 2)); // 1 wymiary kostki, 2 pozycja na osi

            RuchBryly(ruchKostki, new PozycjaNaOsi(1, 2, 2));

            void RuchBryly(IRuch bryla, PozycjaNaOsi nowaPozycja)
            {
                bryla.WykonajRuch(nowaPozycja);
            }
        }