///////////////////////// Abstract Method ////////////////////////////////// static void AbstractMethod() { //var animal = new Animal(); // nu se creaza o instanta pentru clasa abstracta var pisica = new Pisica(); pisica.Mananca(); // apeleaza metoda abstracta pisica.Doarme(); // apeleaza metoda normala }
static void Main(string[] args) { rex animal = new rex(); Console.Write("numar animale: "); animal.numarAnimale(); animal.nume = "\"nume de animal\""; Console.Write($"{animal.nume} \n"); animal.speak(); //method to be overrided using polymorphism Console.WriteLine(); Caine rex = new Caine(); rex.nume = "rex"; //can be accessed because it's plublic //rex.varsta = 0; //error because it's protected and can only be accessed in the base class or subclasses => method varstaAnimal() Console.WriteLine($"Numele meu este {rex.nume}"); rex.setPicioare(4); rex.mers(); //Console.Write("Enter age: "); //rex.setVarsta( int.Parse(Console.ReadLine())); //input method rex.setVarsta(2); rex.varstaAnimal(); //method in subclass for protected variable: varsta rex.speak(); Console.WriteLine(); rex miti = new Pisica(); //works defining it as base class miti.nume = "miti"; miti.setVarsta(5); Console.WriteLine($"Numele meu este {miti.nume}"); miti.setPicioare(); //overload miti.mers(); miti.speak(); Console.WriteLine(); Cangur kangu = new Cangur(); kangu.nume = "sven"; kangu.maPrezint(); //abstractization: hide details kangu.setVarsta(10); //method for protected variable kangu.marsupiu(); kangu.maturizare(); //method in class for private variabile: pui //kangu.pui = false; //error because "pui" property is private kangu.marsupiu(); kangu.setPicioare(2); //polymorphism: overload - same name and different inputs kangu.mers(); //different response for every animal kangu.speak(); //polymorphism: overrided - redefined in every class Console.Write("\nNr total animale: "); rex.numarAnimale(); Console.ReadKey(); }