static void Main(string[] args) { Punkt a = new Punkt(2, 4); Punkt b = new Punkt3d(1, 2, 3); // poliformizm //Punkt3d c = new Punkt(1, 2); żle! Console.WriteLine("punkt b : " + b.wyswietl()); //wywołał się tylko konstruktor klasy bazowej (rzutowanie w góre) stracilismy dostep do metod z punkt3d Console.WriteLine("punkt b po rzutowaniu w dół : " + ((Punkt3d)b).wyswietl()); //rzutujemy bo na Punkt3d : (Punkt3d)b i wyswietlamy Display(a); Display(b); Display2(a); Display2(b); // klasa Object Console.WriteLine((Object)a); Console.WriteLine((Object)a.ToString()); Console.WriteLine(nazwaKlasy(a)); Console.ReadLine(); }
// demonstarcja AS static void Display2(Punkt p) { Punkt3d temp = p as Punkt3d; //jesli niepoprawnie przypisze to temp zostanie null if (temp != null) Console.WriteLine("Display2: " + temp.wyswietl()); else Console.WriteLine("Display2: " + p.wyswietl()); }
static void Main(string[] args) { Punkt a = new Punkt(2, 4); Punkt b = new Punkt3d(1, 2, 3); Console.WriteLine(b.wyswietl()); Console.ReadLine(); }
static void Main(string[] args) { Punkt punkt = new Punkt(2, 4); Console.WriteLine("Punkt = " + punkt.X + ", " + punkt.Y); Punkt3d punkt3d = new Punkt3d(2, 4, 5); punkt3d.zmienX(1000); Console.WriteLine("Punkt3d = " + punkt3d.X + ", " + punkt3d.Y + ", " + punkt3d.Z); Console.WriteLine("metoda wyswietlajaca : " + punkt3d.wyswietl()); Console.ReadLine(); }