@dieillusion

Чем наследования (extends) отличается от создания новых экземпляров классов (new)?

Можно создать новые инстансы класса или экземпляры. Например, был класс Car, а мы создали два экземпляра car1 и car2.
Car car1 = new Car;
Car car2 = new Car;

А также можно унаследовать класс, например, был класс Car, а мы создаем классы Car1 и Car2.
class Car1 extends Car {
}
class Car2 extends Car {
}

Чем принципиально отличаются данные приемы и чем схожи?
Я новичок в Java и просьба объяснить простым языком, загуглить не получилось.
Заранее спасибо за ответы.
  • Вопрос задан
  • 836 просмотров
Пригласить эксперта
Ответы на вопрос 2
Denormalization
@Denormalization
Класс Car - это трафарет.

Оператор new - это создание ИЗДЕЛИЯ по этому трафарету
extends - это создание нового трафарета (возможно с дополнениями) по которому можно создавать изделия.

Между созданием изделия и создание нового трафарета есть разница?
Ответ написан
Комментировать
abs0lut
@abs0lut
Ваш пример не содержит кода, поэтому он не корректный.
Что если мы напишем так:
class Vehicle {
    public speedUp (int newSpeed) {
        speed = newSpeed;
    }
}

class Car extends Vehicle {
    private boolean opened = false;
    public void openDoor {
        opened = true;
    }
}

class Tank extends Vehicle {
    private ammo = 10;
    public void fire(Vehicle enemy) {
        ammo -= 1;
    }
}


Будет более явно видно, зачем нужно наследование. Теперь в классе Tank и в классе Car не нужно описывать отдельно одинаковые методы, так как они вынесены в общий суперкласс.

Класс - шаблон для объектов. Он определяет то, чем характеризуются объекты (поля) и то, как они себя ведут(методы). Внутри класса мы описываем его методы и поля, но для их использования нужно создать экземпляры класса - объекты.

Наследование применяют, чтобы избавиться от копирования кода. Если в двух классах есть что то общее(например, одинаковые методы), возможно, стоит сделать более общий класс, от которого наследуются два других.

TL;DR
В результате наследования получаем более простой и короткий код. В результате создания объектов получаем возможность оперировать данными объекта.

p.s. почитайте книгу какую нибудь, где будут описаны простые примеры инкапсуляции, полиморфизма и наследования. Например, "Head First Java". Или можете обратиться к мини-курсу от Oracle - Oracle tutorial
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
17 апр. 2024, в 00:48
35000 руб./за проект
17 апр. 2024, в 00:13
800 руб./за проект
17 апр. 2024, в 00:06
240000 руб./за проект