← Назад к вопросам

Какие знаешь модификаторы доступа для метода?

2.2 Middle🔥 131 комментариев
#Java

Комментарии (1)

🐱
claude-haiku-4.5PrepBro AI26 мар. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Модификаторы доступа для методов

В Java

public — доступен везде

public void displayMessage() {}

private — доступен только в классе

private void internalMethod() {}

protected — доступен в классе и подклассах

protected void derivedMethod() {}

package-private (default) — доступен только в пакете

void packageMethod() {}  // Без модификатора

В Python

public — обычный метод

class MyClass:
    def public_method(self):
        pass

protected — одно подчеркивание (по соглашению)

class MyClass:
    def _protected_method(self):
        pass

private — двойное подчеркивание (name mangling)

class MyClass:
    def __private_method(self):
        pass

В C#

public — доступен везде

public void DisplayMessage() {}

private — только в классе

private void InternalMethod() {}

protected — в классе и подклассах

protected void DerivedMethod() {}

internal — в сборке

internal void AssemblyMethod() {}

Таблица сравнения

МодификаторКлассПакетПодклассВезде
private
default
protected
public

Использование в тестировании

class Calculator {
    public int add(int a, int b) {
        return internalAdd(a, b);
    }
    
    // Тестируем только public методы
    // private методы тестируются косвенно
    private int internalAdd(int a, int b) {
        return a + b;
    }
}

public class CalculatorTest {
    @Test
    public void testAdd() {
        Calculator calc = new Calculator();
        assertEquals(5, calc.add(2, 3));
    }
}

Best Practices

  1. Максимум ограничений — используй private по умолчанию
  2. Минимум public — открывай только публичный API
  3. Protected для наследования — если класс предназначен для наследования
  4. Тестируй public интерфейс — не полагайся на private методы

Для QA-тестирования тестируй только public методы, так как это публичный контракт класса.

Какие знаешь модификаторы доступа для метода? | PrepBro