Автоматное программирование
- 1 year ago
- 0
- 0
Ме́тод в объектно-ориентированном программировании — это функция или процедура , принадлежащая какому-то классу или объекту .
Как и процедура в процедурном программировании , метод состоит из некоторого количества операторов для выполнения какого-то действия и имеет набор входных аргументов .
Различают простые методы и статические методы (методы класса):
Методы предоставляют интерфейс, при помощи которого осуществляется доступ к данным объекта некоторого класса, тем самым, обеспечивая инкапсуляцию данных .
В зависимости от того, какой уровень доступа предоставляет тот или иной метод, выделяют:
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'.
Для улучшения этой статьи
желательно
:
|