Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Otvety_Po_Pi.doc
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
218.11 Кб
Скачать

Статические классы

Часто бывает использовать классы, содержащие только статические члены, для которых невозможно создавать объекты. Примером такого класса является класс Console. Проще всего в этой ситуации не делать все конструкторы класса приватными, а использовать статические классы. Статический класс может содержать только статические члены и не может содержать конструкторы экземпляров.

14

Абстрактный класс в объектно-ориентированном программировании — базовый класс, который не предполагает создания экземпляров. Абстрактные классы реализуют на практике один из принципов ООП - полиморфизм. Абстрактный класс может содержать (и не содержать[1]) абстрактные методы и свойства. Абстрактный метод не реализуется для класса, в котором описан, однако должен быть реализован для его неабстрактных потомков. Абстрактные классы представляют собой наиболее общие абстракции, то есть имеющие наибольшийобъем и наименьшее содержание.

// Класс транспортное средство abstract class Vehicle { private int price; // стоимость тр. Средства private int maxspeed; // максимальная скорость private int year; // год выпуска private int curspeed; // текущая скорость // исключения для классов наследников protected Exception OutOfMaxBorder = new Exception("Исключение, превышена максимальна граница"); protected Exception NonBellowZero = new Exception("Исключение, введенное значение не может быть отрицательным!"); #region Properties // свойство Стоимость public int Price { get { return price; } set { if (value > 0) price = value; } } // свойство Максимальная скорость public int MaxSpeed { get { return maxspeed; } set { if (value > 0) maxspeed = value; } } #endregion }

Или этот (на выбор)

abstract class BaseClass // Abstract class

{

protected int _x = 100;

protected int _y = 150;

public abstract void AbstractMethod(); // Abstract method

public abstract int X { get; }

public abstract int Y { get; }

}

DerivedClass : BaseClass

{

public override void AbstractMethod()

{

_x++;

_y++;

}

public override int X // overriding property

{

get

{

return _x + 10;

}

}

public override int Y // overriding property

{

get

{

return _y + 10;

}

}

static void Main()

{

DerivedClass o = new DerivedClass();

o.AbstractMethod();

Console.WriteLine("x = {0}, y = {1}", o.X, o.Y);

}

15 Механизм наследования позволяет расширить или создавать конкретные классы от одного более общего класса. При порождении от базового класса важным становится вопрос о доступности этих членов. Приватные члены базового класса не доступны из дочернего класса, а общедоступные – доступны. хотелось бы иметь такие члены класса, которые доступны из базового, дочернего классов, но не из внешнего класса. Такой уровень доступности называется protected. Помимо уровня защиты членов класса в производном классе можно определить способ наследования. Члены базового класса могут быть виртуальными, это значит что в производном классе может содержаться альтернативная реализация virtual члена. Эта альтернативная реализация не отменяет исходной реализации, но делает ее недоступной извне. При отсутствии

альтернативной реализации любой внешний код обращается к коду этого члена в базовом классе.

16

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]