23:43
Урок 11: Внутренние и вложенные классы

Курс по программированию на Java

Урок 11: Внутренние и вложенные классы

В этом уроке мы рассмотрим внутренние и вложенные классы в Java, которые позволяют структурировать код и создавать более гибкие и модульные приложения.

Внутренние классы

Внутренние классы определяются внутри другого класса и имеют доступ к его членам, включая приватные. Пример внутреннего класса:

class OuterClass {
 private String outerField = "Внешнее поле";
 
 class InnerClass {
 void display() {
 System.out.println("Доступ к: " + outerField);
 }
 }
}

public class InnerClassExample {
 public static void main(String[] args) {
 OuterClass outer = new OuterClass();
 OuterClass.InnerClass inner = outer.new InnerClass();
 inner.display();
 }
}

Результат выполнения

Доступ к: Внешнее поле

Статические вложенные классы

Статические вложенные классы определяются внутри другого класса, но не имеют доступа к его членам. Они ведут себя как обычные классы, но являются логической частью внешнего класса. Пример:

class OuterClass {
 static String outerField = "Внешнее поле";
 
 static class StaticNestedClass {
 void display() {
 System.out.println("Доступ к: " + outerField);
 }
 }
}

public class StaticNestedClassExample {
 public static void main(String[] args) {
 OuterClass.StaticNestedClass nested = new OuterClass.StaticNestedClass();
 nested.display();
 }
}

Результат выполнения

Доступ к: Внешнее поле

Упражнения

Упражнение 1: Внутренний класс для вычисления площади

Создайте класс Rectangle с полями width и height. Внутри класса создайте внутренний класс AreaCalculator, который имеет метод calculate для вычисления площади прямоугольника. Создайте объект Rectangle и вызовите метод calculate внутреннего класса.

Решение:

class Rectangle {
 int width;
 int height;
 
 Rectangle(int width, int height) {
 this.width = width;
 this.height = height;
 }
 
 class AreaCalculator {
 int calculate() {
 return width * height;
 }
 }
}

public class RectangleTest {
 public static void main(String[] args) {
 Rectangle rectangle = new Rectangle(5, 10);
 Rectangle.AreaCalculator calculator = rectangle.new AreaCalculator();
 System.out.println("Площадь: " + calculator.calculate());
 }
}

Объяснение: Мы создали класс Rectangle с полями width и height, а также внутренний класс AreaCalculator с методом calculate, который вычисляет площадь прямоугольника. Затем создали объект rectangle и вызвали метод calculate.

Упражнение 2: Статический вложенный класс для вычисления факториала

Создайте класс MathUtils с вложенным статическим классом FactorialCalculator, который имеет метод calculate для вычисления факториала числа. Создайте объект FactorialCalculator и вызовите метод calculate.

Решение:

class MathUtils {
 static class FactorialCalculator {
 int calculate(int n) {
 int result = 1;
 for (int i = 1; i <= n; i++) {
 result *= i;
 }
 return result;
 }
 }
}

public class FactorialTest {
 public static void main(String[] args) {
 MathUtils.FactorialCalculator calculator = new MathUtils.FactorialCalculator();
 int factorial = calculator.calculate(5);
 System.out.println("Факториал 5: " + factorial);
 }
}

Объяснение: Мы создали класс MathUtils с вложенным статическим классом FactorialCalculator, который имеет метод calculate для вычисления факториала числа. Затем создали объект calculator и вызвали метод calculate для вычисления факториала числа 5.

Категория: Java | Просмотров: 77 | Добавил: Admin | Рейтинг: 0.0/0
Всего комментариев: 0
Имя *:
Email *:
Код *: