пользователей: 30398
предметов: 12406
вопросов: 234839
Конспект-online
РЕГИСТРАЦИЯ ЭКСКУРСИЯ

Абстрактные классы и интерфейсы, реализация интерфейсов, определение совместимости типов (операторы is, as). Приведение объекта к интерфейсу.

Абс. Классы: Кроме обычных классов в C# есть абстрактные классы. Абстрактный класс похож на обычный класс. Он также может иметь переменные, методы, конструкторы, свойства. При определении абстрактных классов используется ключевое слово abstract:

abstract class Human{

 public int Length {

get;

set; }

public abstract void Display();}

Главное отличие состоит в том, что мы не можем использовать конструктор абстрактного класса для создания его объекта (т.е. написать Human human = new Human() нельзя).

Интерфейс (interface) представляет собой не более чем просто именованный набор абстрактных членов. Абстрактные методы являются чистым протоколом, поскольку не имеют никакой стандартной реализации. Конкретные члены, определяемые интерфейсом, зависят от того, какое поведение моделируется с его помощью. Интерфейс выражает поведение, которое данный класс или структура может избрать для поддержки. Более того, каждый класс (или структура) может поддерживать столько интерфейсов, сколько необходимо, и, следовательно, тем самым поддерживать множество поведений.

В интерфейсе вообще не предоставляется никакой реализации. В нем указывается только, что именно следует делать, но не как это делать. Как только интерфейс будет определен, он может быть реализован в любом количестве классов. Кроме того, в одном классе может быть реализовано любое количество интерфейсов. Интерфейсы объявляются с помощью ключевого слова interface. где имя — это конкретное имя интерфейса.

Помимо методов, в интерфейсах можно также указывать свойства, индексаторы и события. Интерфейсы не могут содержать члены данных. В них нельзя также определить конструкторы, деструкторы или операторные методы. Кроме того, ни один из членов интерфейса не может быть объявлен как static.

Как только интерфейс будет определен, он может быть реализован в одном или нескольких классах.

Операторы is и as C# Оператор is проверяет совместимость объекта с данным типом, а в качестве результата выдает значение булева типа, либо правду, либо ложь. Оператор is никогда не генерирует исключение, он работает со всеми типами.

Например. int i=8; Object o=new Object(); Boolean b=(i is Object); //b будет равно true

Boolean b1=(o is int); //b1 будет равно false

Если ссылка равна null, то оператор возвращает ложь, так как нет объекта, для которого нужно определить тип.

Оператор as работает со ссылочными типами, он производит нужное преобразование типов, если оно возможно и возвращает null, если оно невозможно. Команда A a=o as A; будет выполнена успешно, но в ссылку а будет записан null, и любое обращение к а как к объекту, например, a.ToString(); вызовет генерацию исключения.


14.01.2019; 12:23
хиты: 136
рейтинг:+1
для добавления комментариев необходимо авторизироваться.
  Copyright © 2013-2024. All Rights Reserved. помощь