Ответ
Метод в ООП — это функция или процедура, принадлежащая классу (или его экземпляру — объекту), которая определяет поведение или действия, которые может выполнять класс/объект. Методы инкапсулируют логику, работающую с данными объекта (полями).
Ключевые характеристики метода:
- Принадлежность: Определяется внутри класса.
- Сигнатура: Уникально идентифицируется именем и списком типов параметров (порядок важен!). Возвращаемый тип не входит в сигнатуру для целей перегрузки.
- Тело: Блок кода, выполняемый при вызове метода.
Пример базового метода в C#:
public class Calculator
{
// Поле (данные)
private string _model;
// Метод экземпляра. Работает с данными КОНКРЕТНОГО объекта.
public int Add(int operandA, int operandB)
{
// Может обращаться к полям объекта, например, логировать вызов с помощью _model
return operandA + operandB;
}
// Статический метод. Принадлежит КЛАССУ в целом, а не объекту.
public static double CalculateCircleArea(double radius)
{
return Math.PI * radius * radius;
}
}
// Использование:
Calculator myCalc = new Calculator();
int sum = myCalc.Add(5, 3); // Вызов метода экземпляра: 8
// Вызов статического метода через имя класса, а не объекта
double area = Calculator.CalculateCircleArea(10.0);
Важные концепции, связанные с методами:
-
Модификаторы доступа (
public,private,protected,internal): Контролируют, откуда можно вызвать метод.public void PublicMethod() { } // Доступен отовсюду. private void PrivateMethod() { } // Доступен только внутри этого класса. -
Перегрузка методов (Overloading): Возможность иметь несколько методов с одним именем, но разными сигнатурами (разное количество или типы параметров).
public void Display(int number) { Console.WriteLine($"Integer: {number}"); } public void Display(string text) { Console.WriteLine($"String: {text}"); } // Перегрузка // Вызов: Display(10) и Display("Hello") будут работать корректно. -
Переопределение методов (Overriding): В иерархии наследования дочерний класс может предоставить свою собственную реализацию виртуального метода родительского класса, используя ключевые слова
virtualиoverride.public class Shape { public virtual void Draw() { Console.WriteLine("Drawing a shape"); } } public class Circle : Shape { public override void Draw() { Console.WriteLine("Drawing a circle"); } // Переопределение } -
Параметры: Могут передаваться по значению (копия), по ссылке (
ref), как выходные параметры (out) или как параметры-массивы (params).
Итог: Методы — это "действия" объектов. Они обеспечивают инкапсуляцию, позволяя скрыть сложную внутреннюю реализацию за простым интерфейсом вызова, и являются основой для полиморфизма через перегрузку и переопределение.