
Статические классы
Часто бывает использовать классы, содержащие только статические члены, для которых невозможно создавать объекты. Примером такого класса является класс 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