Ответ
Метод экземпляра — это метод, который принадлежит конкретному объекту (экземпляру класса). Он оперирует данными этого объекта и вызывается через ссылку на экземпляр. Внутри такого метода доступен неявный указатель this (в C#), ссылающийся на текущий объект.
Ключевые характеристики:
- Работает с состоянием объекта (его полями и свойствами).
- Не может быть вызван без создания экземпляра класса.
- В сигнатуре метода не содержит модификатора
static.
Пример на C#:
public class BankAccount
{
// Поле экземпляра (состояние объекта)
private decimal _balance;
public string Owner { get; set; }
// Конструктор
public BankAccount(string owner, decimal initialBalance)
{
Owner = owner;
_balance = initialBalance;
}
// МЕТОД ЭКЗЕМПЛЯРА: работает с данными конкретного счёта
public void Deposit(decimal amount)
{
if (amount <= 0)
throw new ArgumentException("Deposit amount must be positive.");
_balance += amount; // Изменяем состояние ТЕКУЩЕГО объекта
Console.WriteLine($"{Owner}'s new balance: {_balance}");
}
// Ещё один метод экземпляра
public decimal GetBalance() => _balance;
}
// Использование
var account1 = new BankAccount("Alice", 1000);
var account2 = new BankAccount("Bob", 500);
account1.Deposit(200); // Работает с состоянием account1 (_balance = 1200)
account2.Deposit(100); // Работает с состоянием account2 (_balance = 600)
// account1.GetBalance() вернёт 1200
// account2.GetBalance() вернёт 600
Сравнение со статическим методом:
- Статический метод (
public static void SomeMethod()) принадлежит самому классу, вызывается через имя класса (ClassName.SomeMethod()) и не имеет доступа к нестатическим полям и методам (черезthis). - Метод экземпляра принадлежит объекту, вызывается через объект (
object.Method()) и имеет полный доступ к состоянию этого объекта.