07.09.26
This commit is contained in:
@@ -0,0 +1,84 @@
|
||||
- Статические вложенные классы
|
||||
- Внутренние классы
|
||||
- Локальные классы
|
||||
- Анонимные классы
|
||||
## Статические вложенные классы
|
||||
- Доступ только к статическим полям внешнего класса
|
||||
- Не требует экземпляра внешнего класса
|
||||
- Логическая группировка классов
|
||||
```Java
|
||||
class Outer {
|
||||
static class Static { }
|
||||
}
|
||||
var object = new Outer.Static();
|
||||
```
|
||||
## Внутренние классы
|
||||
- Доступ ко всем полям внешнего класса
|
||||
- Связаны с экземпляром внешнего класса
|
||||
```Java
|
||||
class Outer {
|
||||
private int field;
|
||||
class Inner {
|
||||
public int getOuterField() {
|
||||
return field;
|
||||
}
|
||||
}
|
||||
}
|
||||
Outer outer = new Outer();
|
||||
Outer.Inner inner = outer.new Inner();
|
||||
print(inner.getOuterField());
|
||||
```
|
||||
## Классы, вложенные в интерфейс
|
||||
- По умолчанию `public static`
|
||||
```Java
|
||||
public interface Vehicle {
|
||||
void start();
|
||||
|
||||
class Engine {
|
||||
private int horsepower;
|
||||
public Engine(int horsepower) {
|
||||
this.horsepower = horsepower;
|
||||
}
|
||||
public void roar() {
|
||||
System.out.println("Roar");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Vehicle.Engine myEngine = new Vehicle.Engine(150);
|
||||
myEngine.roar();
|
||||
|
||||
```
|
||||
## Локальные классы
|
||||
- Объявляются внутри метода
|
||||
- Видимость только внутри метода
|
||||
- Нет [[Модификаторы|модификаторов]]
|
||||
```Java
|
||||
class Outer {
|
||||
void outerMethod() {
|
||||
class Local {
|
||||
void innerMethod() { }
|
||||
}
|
||||
Local local = new Local();
|
||||
local.innerMethod();
|
||||
}
|
||||
}
|
||||
```
|
||||
## Анонимные классы
|
||||
- Объявление и создание в одном выражении
|
||||
- Отсутствие имени класса
|
||||
- Реализация интерфейсов или наследование классов
|
||||
```Java
|
||||
interface I { void method(); }
|
||||
|
||||
I obj = new I() {
|
||||
@Override
|
||||
public void method() {
|
||||
print("Hello");
|
||||
}
|
||||
};
|
||||
obj.method();
|
||||
```
|
||||
|
||||
|
||||
Дополнительно: [[Интерфейсы#Вложенные интерфейсы|про вложенные интерфейсы]]
|
||||
Reference in New Issue
Block a user