Учебники по Java

Ява ГЛАВНАЯ Введение в Java Начало работы с Java Синтаксис Java Java-комментарии Java-переменные Типы данных Java Приведение типов Java Операторы Java Java-строки Java-математика Логические значения Java Java, если...иначе Java-переключатель Java-цикл во время выполнения Java для цикла Перерыв/продолжение Java Массивы Java

Java-методы

Java-методы Параметры метода Java Перегрузка метода Java Область применения Java Java-рекурсия

Java-классы

Java ООП Классы/объекты Java Атрибуты класса Java Методы класса Java Конструкторы Java Модификаторы Java Инкапсуляция Java Java-пакеты/API Наследование Java Java-полиморфизм Внутренние классы Java Java-абстракция Java-интерфейс Перечисления Java Пользовательский ввод Java Дата Java Список массивов Java Связанный список Java Java HashMap Набор хэшей для Java Java-итератор Классы-оболочки Java Исключения Java Java регулярное выражение Java-потоки Java-лямбда

Обработка файлов Java

Java-файлы Создание/запись файлов Java Файлы чтения Java Java Удалить файлы

Java Как

Добавить два числа

Справочник по Java

Ключевые слова Java Строковые методы Java Java математические методы

Примеры Java

Примеры Java Компилятор Java Java-упражнения Java-викторина Java-сертификат


Наследование Java


Наследование Java (подкласс и суперкласс)

В Java можно наследовать атрибуты и методы от одного класса к другому. Мы разделяем «концепцию наследования» на две категории:

  • подкласс (дочерний) - класс, который наследуется от другого класса
  • суперкласс (родительский) - класс, наследуемый от

Чтобы наследоваться от класса, используйте extends ключевое слово.

В приведенном ниже примере Carкласс (подкласс) наследует атрибуты и методы от Vehicleкласса (суперкласса):

Пример

class Vehicle {
  protected String brand = "Ford";        // Vehicle attribute
  public void honk() {                    // Vehicle method
    System.out.println("Tuut, tuut!");
  }
}

class Car extends Vehicle {
  private String modelName = "Mustang";    // Car attribute
  public static void main(String[] args) {

    // Create a myCar object
    Car myCar = new Car();

    // Call the honk() method (from the Vehicle class) on the myCar object
    myCar.honk();

    // Display the value of the brand attribute (from the Vehicle class) and the value of the modelName from the Car class
    System.out.println(myCar.brand + " " + myCar.modelName);
  }
}

Вы заметили protectedмодификатор в Vehicle?

Мы устанавливаем атрибуту бренда в Vehicle модификатор protected доступа . Если бы было установлено значение private, класс Car не смог бы получить к нему доступ.

Почему и когда использовать «Наследование»?

- Это полезно для повторного использования кода: повторно используйте атрибуты и методы существующего класса при создании нового класса.

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


Последнее ключевое слово

Если вы не хотите, чтобы другие классы наследовали от класса, используйте finalключевое слово:

Если вы попытаетесь получить доступ к finalклассу, Java выдаст ошибку:

final class Vehicle {
  ...
}

class Car extends Vehicle {
  ...
}

Вывод будет примерно таким:

Main.java:9: error: cannot inherit from final Vehicle
class Main extends Vehicle {
                  ^
1 error)