Sobes.tech
Junior
134
questionbank

Какие элементы языка Java отвечают за наследование?

Ответ от нейросети

sobes.tech AI

  • extends ключевое слово - используется для указания наследования класса от другого класса.
  • implements ключевое слово - используется для указания реализации классом одного или нескольких интерфейсов (наследование поведения).
  • super ключевое слово - используется для обращения к членам родительского класса (полям, методам, конструкторам).
  • abstract ключевое слово - используется для создания абстрактных классов и методов, которые должны быть реализованы в подклассах.
  • final ключевое слово - может использоваться для предотвращения переопределения методов (final method) или наследования класса (final class).
  • Интерфейсы (Interfaces) - определяют контракт методов, которые класс должен реализовать. Позволяют множественное наследование типов (но не реализации).

Пример использования extends:

// Родительский класс
class Animal {
    void eat() {
        System.out.println("Animal is eating");
    }
}

// Дочерний класс, наследующийся от Animal
class Dog extends Animal {
    void sound() {
        System.out.println("Dog barks");
    }
}

Пример использования implements:

// Интерфейс
interface Swimmable {
    void swim();
}

// Класс, реализующий интерфейс
class Fish implements Swimmable {
    @Override
    public void swim() {
        System.out.println("Fish is swimming");
    }
}

Пример использования super:

class Parent {
    int value = 10;
    void display() {
        System.out.println("Parent display");
    }
}

class Child extends Parent {
    int value = 20;
    void display() {
        super.display(); // Вызов метода родителя
        System.out.println("Child display " + super.value); // Доступ к полю родителя
    }
}

Пример использования abstract:

// Абстрактный класс
abstract class Shape {
    // Абстрактный метод (без реализации)
    abstract double getArea();
}

// Конкретный класс, наследующийся от Shape и реализующий абстрактный метод
class Circle extends Shape {
    double radius;
    @Override
    double getArea() {
        return Math.PI * radius * radius;
    }
}

Пример использования final:

class Base {
    // Метод, который нельзя переопределить
    final void finalMethod() {
        System.out.println("Final method");
    }
}

// Класс, который не может быть унаследован
final class CannotExtend {
    // ...
}