Ответ
Метод экземпляра — это метод, который принадлежит конкретному объекту (экземпляру класса). Он оперирует данными этого объекта и вызывается через ссылку на экземпляр. Внутри такого метода доступен неявный указатель 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()) и имеет полный доступ к состоянию этого объекта.
Ответ 18+ 🔞
А, ну вот, смотри, объясняю на пальцах, как всегда. Метод экземпляра — это типа личный раб объекта, его персональная функция. Он пришит намертво к конкретной хуйне, которую ты создал через new. Без этой самой хуйни — объекта — его и вызвать-то нихуя нельзя, он просто не существует.
В чём соль, блядь:
- Ковыряется он строго в кишках своего родного объекта. Хочет поле поменять — пожалуйста. Свойство прочитать — да ради бога. Всё через волшебное слово
this, которое значит «эй, да я же про себя, про этого уёбка!». - Пока ты не наклепал объектов, этот метод спит беспробудным сном. Нет экземпляра — нет и метода, всё просто.
- И главная примета — на нём нет этой ебаной бирки
static. Вообще. Если видишь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("Ты чё, мудила, положить надо, а не вынуть!");
_balance += amount; // Лепит бабло к балансу ЭТОГО самого счёта
Console.WriteLine($"{Owner}, твой новый баланс: {_balance}");
}
// Ещё один такой же, глянуть баланс
public decimal GetBalance() => _balance;
}
// Использование, смотри как работает
var account1 = new BankAccount("Алиса", 1000);
var account2 = new BankAccount("Боб", 500);
account1.Deposit(200); // Кладет 200 на счёт Алисы. _balance у account1 стал 1200
account2.Deposit(100); // А это уже Бобу. Его _balance теперь 600
// account1.GetBalance() вернёт 1200
// account2.GetBalance() вернёт 600
Чем не статический метод, ёпта?
- Статический метод (
public static void SomeMethod()) — это как общая турбина на весь класс. Вызвал его через имя класса (BankAccount.SomeMethod()), и он нихуя не знает про твои личные поля_balance, потому что у него нет доступа кthis. Он как будто в вакууме. - Метод экземпляра — это персональный завхоз у каждого объекта. Вызываешь через точку от объекта (
account1.Deposit(...)), и он сразу лезет в карманы к своему хозяину, всё видит, всё меняет. Вот и вся разница, блядь.