Задать вопрос
@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 и просьба объяснить простым языком, загуглить не получилось.
Заранее спасибо за ответы.
  • Вопрос задан
  • 890 просмотров
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 3
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
Ответ написан
pazukdev
@pazukdev
Java Dev
1. class Car - чертеж автомобиля.
2. class Car1 extends Car - создание чертежа новой модели автомобиля (Car1) на основе чертежа старой (Car).
3. new Car() - производство 1 шт. автомобиля Car согласно чертежу.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы