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(); }
static void Display(Punkt p) { //if(p is Punkt3d) // IS // Console.WriteLine(((Punkt3d)p).PobierzWsp()); //else //Console.WriteLine(p.PobierzWsp()); Punkt3d p3d = p as Punkt3d; if (p3d == null) // kiedy nie jest mozliwe w p3d bedzie null { Console.WriteLine(p.PobierzWsp()); } else { Console.WriteLine(p3d.PobierzWsp()); } }
static void Main(string[] args) { Punkt punkt = new Punkt(5, 10); Console.WriteLine(punkt.PobierzWsp()); Punkt3d punkt3d = new Punkt3d(1, 2, 3); Console.WriteLine(punkt3d.PobierzWsp()); // rzutowanie Punkt a; Punkt b; a = new Punkt(1, 5); b = new Punkt3d(1, 2, 3); Display(a); Display(b); Console.WriteLine(getClassName(b)); // Console.WriteLine(a.PobierzWsp()); // Console.WriteLine(((Punkt3d)b).PobierzWsp()); //rzutowanie Console.ReadKey(); }