Топ-100Наследование в Java
LogoCodOrbits

Раздел: ООП

Здесь вы познакомитесь с объектно-ориентированным программированием в Java: классы, наследование, инкапсуляция и полиморфизм и многое другое.

Все разделы
Иконка ООП

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

Last updated: 3 мая 2025 г.

Наследование дает возможность одному классу получить доступ к полям и методам другого класса. Однако между этими классами должна быть логическая связь: от общего к частному.

Например, в программе ниже создаётся класс Animal (Животное).

Затем создаётся класс Cat (Кот), который с помощью ключевого слова extends наследует Animal, потому что кот — это частный случай животного, то есть кот является животным.

Животными, разумеется, являются и собака, и птица, и кенгуру и т.д., поэтому они тоже могут наследовать от Animal. То есть класс Animal общий в том плане, что от него могут наследовать классы разных конкретных животных.

При наследовании класса Animal, класс Cat получает доступ напрямую ко всем полям и методам класса Animal.

Например, если у класса Animal есть поля: количество ног, тип питания и т.д., то класс Cat, наследующий Animal, также будет обладать этими полями. И если мы создадим объект кота в методе main, то сможем обращаться к этим полям через объект кота — как будто они определены непосредственно в классе Cat. Таким образом, можно сказать, что создаётся единый объект, состоящий из данных класса Animal и класса Cat.

Рассмотрим пример:

1// Это класс Животное
2class Animal {
3    // У него два поля: тип питания и количество ног
4    private String eats;
5    private int noOfLegs;
6
7    public Animal(){}
8
9    public Animal(String food, int legs){
10        this.eats = food;
11        this.noOfLegs = legs;
12    }
13
14    //геттеры и сеттеры
15    public String getEats() {
16        return eats;
17    }
18
19    public void setEats(String eats) {
20        this.eats = eats;
21    }
22
23    public int getNoOfLegs() {
24        return noOfLegs;
25    }
26
27    public void setNoOfLegs(int noOfLegs) {
28        this.noOfLegs = noOfLegs;
29    }
30}
31
32//Наследование реализуется с помощью 
33//ключевого слова extends.
34//Cat наследует Animal.
35class Cat extends Animal{
36    private String name;
37    private String color;
38
39    Cat(){}
40
41    Cat (String catName, String catColor) {
42        name = catName;
43        color = catColor;
44        System.out.println(color);
45    }
46
47    public String getName(){
48        return name;
49    }
50
51    public void setName(String catName){
52        name = catName;
53    }
54
55    public String getColor(){
56        return color;
57    }
58
59    public void setColor(String catColor){
60        color = catColor;
61    }
62
63    void sayMeow(){
64        System.out.println("Meow");
65    }
66}
67
68class Inheritance {
69    public static void main(String[] args){
70        Cat somecat = new Cat();
71        //Через объект класса Cat
72        //имеем доступ к методам
73        //setNoOfLegs и getNoOfLegs класса Animal
74        //благодаря наследованию.
75        somecat.setNoOfLegs(4);
76        System.out.println(somecat.getNoOfLegs());
77    }
78}

Вывод:

Основное преимущество наследования очевидно — уменьшение количества кода за счет того, что довольно большая часть кода может быть вынесена в класс родитель, а наследники этот код могут просто использовать, так сказать, “подключаясь” с помощью extends к классу родителю.

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


Следующие уроки

Полиморфизм

15
мин.

Similar Articles Icon
Divider

Абстрактный класс

16
мин.

Similar Articles Icon
Divider

Интерфейсы в Java

13
мин.

Similar Articles Icon