Ватсон Карли
Шрифт:
Еще одним удачным способом в C# является сокрытие метода. Концепция сокрытия метода обсуждалась ранее в этом приложении. Она позволяет иметь такую же сигнатуру, как и у метода базового класса, не переопределяя базовый метод. Это делается с помощью ключевого слова new, которое помещается перед реализацией метода. Отметим, что, как описано ранее, отсутствие ключевого слова
Следующий листинг показывает, как вызывается любая версия метода
Результатом этих вызовов будет:
Сокрытие методов существенно отличается от переопределения методов. В C# переопределение метода является явной процедурой. Это отличается от подхода Java, где переопределение является поведением по умолчанию, когда сигнатура члена суперкласса совпадает с сигнатурой в его подклассе. Чтобы переопределить метод базового класса в C#, необходимо пометить его как
Этот код не будет компилироваться. Надо сначала проинформировать компилятор, что указанный метод, в данном случае
Достоинством переопределения метода является гарантия, что будет вызван самый производный метод. Взгляните на код вызова, представленный ниже, такой же код, что и в примере сокрытия метода, создает два других значения:
Так как гарантировано, что всегда вызывается версия
Единственное синтаксическое различие между абстрактными классами в Java и C# состоит в размещении ключевого слова
Свойства и индексаторы
Раньше методы