Ме́тод в объектно-ориентированном программировании — это функция или процедура, принадлежащаяПод принадлежностью подразумевается, что метод явно ассоциирован с обработкой определённого класса объектов.

Теоретически, метод предназначен для обработки ассоциированного с ним типа, но фактически это необязательно. какому-то классу или объекту.

Как и процедура в процедурном программировании, метод состоит из некоторого количества операторов для выполнения какого-то действия и имеет набор входных аргументов.

Различают простые методы и статические методы (методы класса): простые методы имеют доступ к данным объекта (конкретного экземпляра данного класса), статические методы не имеют доступа к данным объекта, и для их использования не нужно создавать экземпляры (данного класса).

Методы предоставляют интерфейс, при помощи которого осуществляется доступ к данным объекта некоторого класса, тем самым, обеспечивая инкапсуляцию данных.

В зависимости от того, какой уровень доступа предоставляет тот или иной метод, выделяют: открытый (public) интерфейс — общий интерфейс для всех пользователей данного класса; защищённый (protected) интерфейс — внутренний интерфейс для всех наследников данного класса; закрытый (private) интерфейс — интерфейс, доступный только изнутри данного класса. Такое разделение интерфейсов позволяет сохранять неизменным открытый интерфейс, но изменять внутреннюю реализацию.

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

public class Main { String _name; int _roll;

Main(String name, int roll) { // метод конструктора this._name = name; this._roll = roll;

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

Пример Следующий код Java показывает абстрактный класс, который необходимо расширить:

abstract class Shape { abstract int area(int h, int w); // сигнатура абстрактного метода } Следующий подкласс расширяет основной класс:

public class Rectangle extends Shape { @Override int area(int h, int w) { return h * w;

Реабстракция Если подкласс обеспечивает реализацию абстрактного метода, другой подкласс может снова сделать его абстрактным. Это называется реабстракцией.

На практике это используется редко.

Пример В C#, виртуальный метод можно переопределить абстрактным методом. (Это также относится к Java, где все незащищенные методы являются виртуальными.) class IA { public virtual void M() { } } abstract class IB : IA { public override abstract void M(); // разрешено }

Методы интерфейсов по умолчанию также могут быть реабстрагированы, требуя подклассов для их реализации. (Это также относится к Java.) interface IA { void M() { } } interface IB : IA { abstract void IA.M(); } class C : IB { } // ошибка: класс 'C' не реализует 'IA.M'.

См. также Свойство Событие

Примечания

* Категория:Объектно-ориентированное программирование Категория:Концепции языков программирования