Комментарии (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
- Максимум ограничений — используй private по умолчанию
- Минимум public — открывай только публичный API
- Protected для наследования — если класс предназначен для наследования
- Тестируй public интерфейс — не полагайся на private методы
Для QA-тестирования тестируй только public методы, так как это публичный контракт класса.