コード例 #1
0
        public static void Init()
        {
            Ssak mojSsak = new Ssak();
            Kon  mojKon  = new Kon();

            mojKon.ZaluzSiodlo();
            mojSsak = mojKon;
            mojSsak.ZaluzSiodlo(); // błąd. Odwołujac się do obiektu klasy Kon za pomocą zmiennej typu 'Ssak' możemy korzystać tylko z metod i właściwości zdefiniowanych w klasie 'Ssak'
                                   // Metoda ZaluzSiodlo() (ang. put saddle) jest tylko w klasie Kon.

            Ssak jakisSsak = new Ssak();
            // Kon jakisKon = jakisSsak;  // błąd. Nie można przypisać obiektu klasy 'Ssak' to zmiennej typu 'Kon'. Klasa 'Kon' "rozszerza" klase 'Ssak' i zawiera wiecej pól i metod, dlatego jest to niemożliwe.

            // Możliwe jest przypisanie pod warunkiem, że obiekt klasy 'Ssak' tak naprawde jest Koniem. Można to sprawdzić za pomocą operatorów 'as', 'is' lub rzutowania przykład poniżej.
            Kon  konik = new Kon();
            Ssak ssak  = konik;
            Kon  konPonownie;

            if (ssak is Kon)
            {
                konPonownie = (Kon)ssak;
            }

            Delfin delfin = new Delfin();

            ssak = delfin;

            konPonownie = ssak as Kon; // Oprator as zwróci 'null', gdyż obiekt 'ssak' jest rownież obiektem klasy 'Delfin' a nie 'Kon'.
        }
コード例 #2
0
        // Ważną zaletą Dziedziczenia jest to, że do tej metody mogę przekazać każdy obiekt klasy dziedziczącej po klase bazowej.
        public static void Konwersja(Ssak ssak)
        {
            Kon mojKon = ssak as Kon; // Wiecej na temat 'as' w rozdział 8 Wartości i Referecje - SaveCasting

            if (mojKon != null)
            {
                mojKon.ZaluzSiodlo();
            }
        }