Ejemplo n.º 1
0
        static void Main()
        {
            /* Пример 1 Реализация метода интрефейса через унаследование от абстрактного класса */

            Driver driver = new Driver();

            driver.Move();          //  Шофёр ведет машину

            /* Пример 2 Реализация метода интерфейса унаследованная от базового класса */

            HeroAction heroAction = new HeroAction();

            heroAction.Move();      //  Move in BaseAction

            /* Пример 3 Изменение реализации интерфейсов в производных классах */

            BaseAction2 baseAction2 = new HeroAction2();

            baseAction2.Move();     //  Move In HeroAction2

            IAction action2 = new HeroAction2();

            action2.Move();         //  Move In HeroAction2

            HeroAction2 heroAction2 = new HeroAction2();

            heroAction2.Move();     //  Move In HeroAction2

            /* Пример 4 Повторная реализация интерфейса в классе-наследнике */

            BaseAction3 action3 = new HeroAction3();

            action3.Move();            // Move in BaseAction3

            IAction action4 = new HeroAction3();

            action4.Move();             // Move in HeroAction3

            HeroAction3 action5 = new HeroAction3();

            action5.Move();             // Move in HeroAction3

            /* Пример 5  Явная реализация интерфейса */

            BaseAction4 action6 = new HeroAction4();

            action6.Move();            // Move in BaseAction4

            IAction action7 = new HeroAction4();

            action7.Move();             // Move in IAction4

            HeroAction4 action8 = new HeroAction4();

            action8.Move();             // Move in HeroAction4
        }
Ejemplo n.º 2
0
        static void actionExample()
        {
            HeroAction action1 = new HeroAction();

            action1.Move();            // Move in BaseAction
            ((IAction)action1).Move(); // Move in HeroAction

            IAction action2 = new HeroAction();

            action2.Move();             // Move in HeroAction
        }
Ejemplo n.º 3
0
        public static void Display()
        {
            Person person = new Person();
            Car    car    = new Car();

            Action(person);
            Action(car);

            Driver driver = new Driver();

            Action(driver);

            HeroAction action = new HeroAction();

            action.Move();
        }
Ejemplo n.º 4
0
        public static void Display()
        {
            BaseAction action1 = new HeroAction();

            action1.Move();            // Move in HeroAction

            IAction action2 = new HeroAction();

            action2.Move();             // Move in HeroAction

            action1.Move2();            // Move2 in BaseAction
            action2.Move2();            // Move2 in BaseAction

            BaseAction action3 = new HeroActionRealized();

            action3.Move3();            // Move3 in BaseAction

            IAction action4 = new HeroActionRealized();

            action4.Move3();            // Move3 in HeroActionRealized
        }
Ejemplo n.º 5
0
        public static void OutTask()
        {
            Console.WriteLine("---- Основные сведения об интерфейсах ----\n" +
                              "Интерфейс представляет ссылочный тип, используется для определения \n" +
                              "некоторого функционала - набор методов и свойств и реализации." +
                              "После данный функционал реализуют классы или структуры, которые применяют применяют данные интерфейса." +
                              "По умолчанию интерфейсы имеют модификатор доступа internal.\n" +
                              "Интерфейсы не могут иметь модификатора доступа abstract" +
                              "В интерфейсах константы и статические классы имеют модификатор доступа public\n" +
                              "В класс можно добавлять неограниченное количество интерфейсов\n" +
                              "1.Интерфейсы и преобразование типов\n" +
                              "2.Явная реализация интерфейсов\n" +
                              "Если мы используем модификатор доступа не public для полей и методов," +
                              " то необходимо использовать явную реализацию\n" +
                              "Если мы явно реализуем поле или метод интерфейса, то по умолчанию он является закрытым.\n" +
                              "К нему можно обратиться только через интерфейс, или явному приведению к интерфейсу\n" +
                              "Или если нам нужно переопределить метод в базовом классе.\n" +
                              "3.Реализация интерфейсов в базовых и прроизводных классов\n" +
                              "Задача, создать метод в интерфейсе, в унаследуемом классе переопределить метод на abstract или virtual,\n" +
                              "а после реализовать в классе, который унаследует предыдущий");
            // Интерфейсы и преобразование типов
            IMovable movable = new Car("Porsh", 10, "drive");

            Console.WriteLine(movable.ToString());
            movable.Move();

            Car    car      = (Car)movable;
            string moveName = ((Car)movable).TypeMove;

            Console.WriteLine(moveName);

            // Использование интерфейсов с методами класса
            BaseAction action1 = new HeroAction();

            action1.Move();            // Move in BaseAction

            IAction action2 = new HeroAction();

            action2.Move();             // Move in BaseAction

            // создание события с помощью интерфейса
            IMovable mov = new Car("Porsh", 10, "drive");

            // подписываемся на событие
            mov.MoveEvent += (string value) => Console.WriteLine(value);
            mov.Move();

            // Создание и переопределение метода или поля интерфейса в унаследованном классе.
            ICoin icoin = new Wallet(10, "USD", "25 cents");

            icoin.ToString();             // Move in IAction

            Wallet wallet = new Wallet(10, "USD", "25 cents");

            wallet.Info();             // Move in HeroAction

            // Использование обобщейний для интерфейсов
            CLClient client1     = new CLClient("Tom", 300);
            CLClient client2     = new CLClient("Олег", 200);
            var      transaction = new NewTransaction <CLClient>();

            transaction.Operate(client1, client2, 150);

            IProductTest <int> user1 = new ProductTest <int>(55);

            Console.WriteLine(user1._id);
            IProductTest <string> user2 = new ProductTest <string>("12345");

            Console.WriteLine(user2._id);
        }