Files
obsidian/Программирование на Java/ООП/Наследование/Сокрытие.md
T
roma-dxunvrs 4fabe16272 04.09
2026-09-04 22:55:43 +03:00

71 lines
2.7 KiB
Markdown

Краткие правила были описаны в [[Наследование]], сейчас будут примеры
## Сокрытие поля
```Java
class Base {
protected int protField = 3;
public int pubField = 4;
public static int statField = 5;
}
class Extended extends Base {
protected float protField = 7.0f;
public float pubField = 8.0f;
public static int statField = 9;
print(this.protField) // 7.0
print(super.protField) // 3
print(this.pubField) // 8
print(super.pubField) // 4
print(statField) // 9
print(Base.statFiel) // 5
}
```
Если имя поля в подклассе и в суперклассе одинаковое
- Поле подкласса скрывает поле суперкласса
- Статическое поле суперкласса доступно по имени класса `BaseClass.staticField`
- Нестатическое поле суперкласса доступно с помощью super: `super.instanceField`
- Скрытое поле может иметь другой тип
- Поле может стать `static`, если было не статик. И наоборот
## Сокрытие метода
Только для статиков
```Java
class Base {
public int getVal() {
return 1;
}
public static int statVal() {
return 3;
}
}
class Ext extends Base {
public int getVal() {
return 2;
}
public static int statVal() {
return 4;
}
}
Base b = new Base();
Ext e = new Ext();
Base be = new Ext();
print(b.statVal()) // 3
print(e.statVal()) // 4
print(be.statVal()) // 3 - по типу ссылки для статики
print(b.getVal()) // 1
print(e.getVal()) // 2
print(be.getVal()) // 2 - просто переопределение
```
Если [[Функции#Сигнатура|сигнатура]] (имя и параметры) статического метода в подклассе и в суперклассе одинаковая
- Статический метод подкласса скрывает метод суперкласса
- Статический метод суперкласса доступен по имени класса `BaseClass.staticMethod()`
- Модификатор доступа может только расшириться (правило как в [[Переопределение|переопределении]])
- Возвращаемое значение должно быть ковариантным (тоже как в переопределении)
- Менять статик на нон-статик и обратно запрещено
## P.S.
Сокрытие методов в целом плохая практика, обращаться к статике по объектам - плохой тон