На примере языка C#
Класс — абстрактный тип данных в объектно-ориентированном программировании (ООП).
Для начала необходимо познакомиться с тремя концепциями ООП:
* Инкапсуляция
* Наследование
* Полиморфизм
Классы состоят полей, методов и свойств.
Поле — переменная, связанная с классом или объектом. Все данные объекта хранятся в его полях.
Метод — это процедура или функция для обработки данных класса.
Свойство — это интерфейс доступа к соответствующему полю класса.
В классах должен быть конструктор для инициализации полей класса и выделения памяти. Если он не объявлен, то используется конструктор по умолчанию без параметров. Однако если объявить в классе какой-либо конструктор, то конструктора по умолчанию в классе не будет. И если необходим конструктор без параметров, то его нужно объявить самостоятельно.
Почти каждому члену класса можно установить модификатор доступа (статический конструктор не может иметь модификатор доступа). В большинстве языков объектно-ориентированного программирования поддерживаются следующие модификаторы доступа:
* private (закрытый, внутренний член класса) — обращения к члену допускаются только из методов того класса, в котором этот член определён. Любые наследники класса уже не смогут получить доступ к этому члену;
* protected (защищённый, внутренний член иерархии классов) — обращения к члену допускаются из методов того класса, в котором этот член определён, а также из любых методов его классов-наследников.;
* public (открытый член класса) — обращения к члену допускаются из любого места в программе;
* internal — обращение к члену допускается только из той сборки, в которой класс объявлен;
* protected internal — обращение к члену допускается без ограничений в той сборке, в которой класс определён, а вне сборки — только в классах-наследниках.
Классы могут быть разбиты на несколько фрагментов. Для объявления таких классов используется модификатор partial.
Модификатор sealed обозначает, что класс «запечатан», и наследование этого класса запрещено. Большинство служебных классов объявлены с модификатором sealed (например, мы не можем наследовать от класса string)
Абстрактный метод объявляется с модификатором abstract — это обозначает, что данный метод не реализуется классом, однако должен быть реализован в классах-наследниках.
Члены класса могут быть статическими. Это значит, что доступ к этим членам осуществляется на уровне класса, а не объекта. Статические члены объявляются при помощи модификатора static.
Статические поля могут быть инициализированы в статическом конструкторе. Он вызывается CLR ДО создания объектов класса. В статическом конструкторе не могут быть инициализированы экземплярные члены класса.
Поля класса могут быть константными. Если поля объявлено с ключевым словом const, оно должно при объявлении получить какое-либо значение. Константные поля являются неявно статическими и доступны на уровне класса.
Поле может быть только для чтения. Оно объявляется при помощи ключевого слова readonly. Поля только для чтения, в отличии от полей-констант, могут быть инициализированы в конструкторе класса.
В целях обеспечения полиморфизма, методы класса могут быть виртуальными. Они объявляются при помощи модификатора virtual. В классах-наследниках виртуальные методы могут быть переопределены, используя модификатор override. При описании метода возможно совместное указание модификаторов new и virtual. Такой приём создаёт новую полиморфную цепочку замещения.
Классы могут быть абстрактными и статическими.
Абстрактный класс — это класс, содержащих хотя бы один абстрактный метод. Также допустимо объявить любой класс абстрактным, даже если в нём нет абстрактных методов, именно для запрещения создания экземпляров.
Абстрактный класс объявляется при помощи ключевого слова abstract.
Создавать экземпляры абстрактного класса запрещено.
Статический класс — это класс, у которого все методы статические. Объявляется при помощи ключевого слова static.
Нельзя создавать экземпляры статического класса.
Класс — абстрактный тип данных в объектно-ориентированном программировании (ООП).
Для начала необходимо познакомиться с тремя концепциями ООП:
* Инкапсуляция
* Наследование
* Полиморфизм
Классы состоят полей, методов и свойств.
Поле — переменная, связанная с классом или объектом. Все данные объекта хранятся в его полях.
Метод — это процедура или функция для обработки данных класса.
Свойство — это интерфейс доступа к соответствующему полю класса.
В классах должен быть конструктор для инициализации полей класса и выделения памяти. Если он не объявлен, то используется конструктор по умолчанию без параметров. Однако если объявить в классе какой-либо конструктор, то конструктора по умолчанию в классе не будет. И если необходим конструктор без параметров, то его нужно объявить самостоятельно.
Почти каждому члену класса можно установить модификатор доступа (статический конструктор не может иметь модификатор доступа). В большинстве языков объектно-ориентированного программирования поддерживаются следующие модификаторы доступа:
* private (закрытый, внутренний член класса) — обращения к члену допускаются только из методов того класса, в котором этот член определён. Любые наследники класса уже не смогут получить доступ к этому члену;
* protected (защищённый, внутренний член иерархии классов) — обращения к члену допускаются из методов того класса, в котором этот член определён, а также из любых методов его классов-наследников.;
* public (открытый член класса) — обращения к члену допускаются из любого места в программе;
* internal — обращение к члену допускается только из той сборки, в которой класс объявлен;
* protected internal — обращение к члену допускается без ограничений в той сборке, в которой класс определён, а вне сборки — только в классах-наследниках.
Классы могут быть разбиты на несколько фрагментов. Для объявления таких классов используется модификатор partial.
Модификатор sealed обозначает, что класс «запечатан», и наследование этого класса запрещено. Большинство служебных классов объявлены с модификатором sealed (например, мы не можем наследовать от класса string)
Абстрактный метод объявляется с модификатором abstract — это обозначает, что данный метод не реализуется классом, однако должен быть реализован в классах-наследниках.
Члены класса могут быть статическими. Это значит, что доступ к этим членам осуществляется на уровне класса, а не объекта. Статические члены объявляются при помощи модификатора static.
Статические поля могут быть инициализированы в статическом конструкторе. Он вызывается CLR ДО создания объектов класса. В статическом конструкторе не могут быть инициализированы экземплярные члены класса.
Поля класса могут быть константными. Если поля объявлено с ключевым словом const, оно должно при объявлении получить какое-либо значение. Константные поля являются неявно статическими и доступны на уровне класса.
Поле может быть только для чтения. Оно объявляется при помощи ключевого слова readonly. Поля только для чтения, в отличии от полей-констант, могут быть инициализированы в конструкторе класса.
В целях обеспечения полиморфизма, методы класса могут быть виртуальными. Они объявляются при помощи модификатора virtual. В классах-наследниках виртуальные методы могут быть переопределены, используя модификатор override. При описании метода возможно совместное указание модификаторов new и virtual. Такой приём создаёт новую полиморфную цепочку замещения.
Классы могут быть абстрактными и статическими.
Абстрактный класс — это класс, содержащих хотя бы один абстрактный метод. Также допустимо объявить любой класс абстрактным, даже если в нём нет абстрактных методов, именно для запрещения создания экземпляров.
Абстрактный класс объявляется при помощи ключевого слова abstract.
Создавать экземпляры абстрактного класса запрещено.
Статический класс — это класс, у которого все методы статические. Объявляется при помощи ключевого слова static.
Нельзя создавать экземпляры статического класса.