Ejemplo n.º 1
0
        static void Main(string[] args)
        {
            var Car1 = new Car("Toyota Supra", "Toyota", 2009, "1137-A213-DSJ123");

            //Console.WriteLine(Car1.ToString());
            //Console.WriteLine(Car1);

            //Console.WriteLine(Car1.GetHashCode());
            //Console.WriteLine();

            //var Car2 = new Car("Toyota Supra", "Toyota", 2009, "123-3A-432B");
            //Console.WriteLine(Car1.Equals(Car2));
            //Car1.HowOld();
            //Console.WriteLine();

            //var Car3 = new Car("Nissan GTR R-35", "Nissan", 2017, "1231-AFGS-124");
            //Console.WriteLine(Car3.ToString());

            //Car3.SwitchLights();
            //Console.WriteLine(Car3.Lights);
            //Car3.SwitchMusic();
            //Console.WriteLine(Car3.Music);
            //Console.WriteLine();
            //Car3.AddFuel();
            //Car3.AddOil();
            //Console.WriteLine();


            var Falcon9 = new Rocket();

            Falcon9.DoSmth();
            //Console.WriteLine();

            //Treatment method

            Falcon9.AddFuel(); // via class object

            //Переменные ссылочного интерфейсного типа
            //могут ссылаться на любой объект, реализующий ее интерфейс
            IAdd Ilink = new Rocket();

            Ilink.AddFuel(); // via interface link

            //Присваивание ссылке на интерфейс
            //объектов различных типов,
            //поддерживающих этот интерфейс
            Add(Falcon9); //Upcasting


            //Явное указание имени интерфейса перед реализуемым элементом
            //Ismth1 Falcon8 = new Rocket();
            //Falcon8.StartEngine();

            //В таком случае соответствующий элемент не входит в интерфейс класса
            //var Falcon7 = new Rocket();
            //Falcon7.StartEngine(); - ERROR

            //Implicit upcasting
            //((Ismth1)(Falcon7)).StartEngine();
            //((Ismth2)(Falcon7)).StartEngine();


            Console.ReadKey();
        }