Gray Hat C#

#3 Gray Hat C#. Руководство для хакера по созданию и автоматизации инструментов безопасности. Создание подкласса абстрактного класса и реализация интерфейса.

Здравствуйте, дорогие друзья.

Давайте применим наш класс PublicServant и интерфейс IPerson и немного закрепим то, о чем мы говорили. Мы можем создать класс для представления наших пожарных, который наследуется от класса PublicServant и реализует интерфейс IPerson, как показано в листинге 1-5.

Listing 1-5: The Firefighter class
Listing 1-5: The Firefighter class

Класс Firefighter [1] немного сложнее, чем все, что мы уже реализовали. Во-первых, обратите внимание, что класс Firefighter наследует класс PublicServant [2] и реализует интерфейс Iperson [3]. Это делается путем указания класса и интерфейса, разделенных запятыми, после имени класса Firefighter и двоеточия. Затем мы создаем новый конструктор [4], который используется для установки свойств класса при создании нового экземпляра класса. Новый конструктор примет имя и возраст пожарного в качестве аргументов, что установит свойства Name [5] и Age [6], требуемые интерфейсом IPerson, с переданными значениями. Затем мы переопределяем метод DriveToPlaceOfInterest(), унаследованный от класса PublicServant, одним из наших собственных, вызывая несколько объявленных нами пустых методов. Нам необходимо реализовать метод DriveToPlaceOfInterest() [7], поскольку в классе PublicServant он помечен как абстрактный, а абстрактные методы должны быть переопределены подклассами.


Примечание: Классы имеют конструктор по умолчанию, у которого нет параметров для создания экземпляров. Создание нового конструктора фактически переопределяет конструктор по умолчанию.

Класс PublicServant и интерфейс IPerson могут быть очень гибкими, и могут использоваться для создания классов совершенно разного назначения. Мы реализуем еще один класс, класс PoliceOfficer, как показано в листинге 1.6, используя PublicServant и IPerson.

Listing 1-6: The PoliceOfficer class
Listing 1-6: The PoliceOfficer class

Класс полицейского (PoliceOfficer) [1] похож на класс пожарного, но есть несколько отличий. В частности, в конструкторе [2] было установлено новое свойство HasEmergency [3]. Мы также переопределяем метод DriveToPlaceOfInterest() [4], как и в предыдущем классе Firefighter, но на этот раз мы используем свойство HasEmergency [5], чтобы определить, должен ли офицер вести машину с включенной сиреной. Мы можем использовать одну и ту же комбинацию родительского класса и интерфейса для создания классов, которые функционируют совершенно по-разному.

На этом все. Всем хорошего дня!

Цикл статей по Gray Hat C#. Руководство для хакера по созданию и автоматизации инструментов безопасности.