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'. }
// 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(); } }