Ограничение на базовый класс разрешает коду в классеPhoneListдоступ к свойствамNameиNumberдля управления любым видом списка телефонных номеров. Оно гарантирует также, что для построения объекта классаPhoneListбудут использоваться только доступные типы. Обратите внимание на то, что в классеPhoneListгенерируется исключениеNotFoundException,если имя или номер телефона не найдены. Это специальное исключение, объявляемое ниже.

class NotFoundException : Exception {

/* Реализовать все конструкторы класса Exception.

Эти конструкторы выполняют вызов конструктора базового класса.

Класс NotFoundException ничем не дополняет класс Exception и поэтому не требует никаких дополнительных действий. */

public NotFoundException()    :    base()    {    }

public NotFoundException(string str) : base (str) { }

public NotFoundException(

string str, Exception inner) : base(str, inner) { } protected NotFoundException(

System.Runtime.Serialization.Serializationlnfo si,

System.Runtime.Serialization.StreamingContext sc) : base(si, sc) { }

В данном примере используется только конструктор, вызываемый по умолчанию, но ради наглядности этого примера в классе исключенияNotFoundExceptionреализуются все конструкторы, определенные в классеException.Обратите внимание на то, что эти конструкторы вызывают эквивалентный конструктор базового класса, определенный в классе.Exception.А поскольку класс исключенияNotFoundExceptionничем не дополняет базовый классException,то для любых дополнительных действий нет никаких оснований.

В приведенной ниже программе все рассмотренные выше фрагменты кода объединяются вместе, а затем демонстрируется применение классаPhoneList.Кроме того, в ней создается классEmail Friend.Этот класс не наследует от классаPhoneNumber,а следовательно, оннеможет использоваться для создания объектов классаPhoneList.

// Более практический пример, демонстрирующий применение // ограничения на базовый класс.

using System;

// Специальное исключение, генерируемое в том случае,

// если имя или номер телефона не найдены, class NotFoundException : Exception {

/* Реализовать все конструкторы класса Exception.

Эти конструкторы выполняют вызов конструктора базового класса.

Класс NotFoundException ничем не дополняет класс Exception и поэтому не требует никаких дополнительных действий. */

public NotFoundException () base() { }

public NotFoundException(string str) : base(str) { }

public NotFoundException (

string str,Exception inner) : base(str, inner) { } protected NotFoundException(

Перейти на страницу:

Похожие книги