Найти тему
JavAKnazzz

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

Наследование – это свойство системы, позволяющее описать новый класс на основе уже существующего с частично или полностью заимствующейся функциональностью.

Класс, от которого производится наследование, называется предком, базовым или родительским. Новый класс – потомком, наследником или производным классом.

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

public abstract class WirelessPhone extends AbstractPhone {

private int hour;

public WirelessPhone(int year, int hour) {
super(year);
this.hour = hour;
}
}

Сотовые телефоны наследуют свойства беспроводного телефона, мы также добавили в этот класс реализацию методов call и ring:

public class CellPhone extends WirelessPhone {
public CellPhone(int year, int hour) {
super(year, hour);
}

@Override

public void call(int outputNumber) {
System.out.println("Вызываю номер " + outputNumber);
}

@Override

public void ring(int inputNumber) {
System.out.println("Вам звонит абонент " + inputNumber);
}
}

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

public class Smartphone extends CellPhone {

private String operationSystem;

public Smartphone(int year, int hour, String operationSystem) {
super(year, hour);
this.operationSystem = operationSystem;
}

public void install(String program){
System.out.println("Устанавливаю " + program + "для" + operationSystem);
}

}

Как видите, для описания класса Smartphone мы создали совсем немного нового кода, но получили новый класс с новой функциональностью. Использование этого принципа ООП java позволяет значительно уменьшить объем кода, а значит, и облегчить работу программисту.