Java. Урок 28. Абстрактные классы и множественное наследование

В данном уроке мы еще больше углубимся в объектно-ориентированное программирование и изучим абстрактные классы. Абстрактные классы нужны в том случае, если у вас есть метод или группа методов, которые вы не можете реализовать в данном классе, но которые могут быть написаны в классах наследниках. Такую ситуацию мы уже рассматривали в примере про фигуры: Shape(класс-родитель), Circle(наследник) и так далее. Класс Shape содержал пустой метод без реализации, в таких случаях обычно не ставят фигурные скобочки, а используют точку запятой и перед объявлением добавляют ключевое слово abstract:

1
2
3
public abstract class Shape {
    abstract public void draw();
}

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

1
2
3
4
5
6
public class Сircle extends Shape {
    public void draw() {
        System.out.println("Круг");
    }
}
Shape circle = new Сircle();//пример использования

Теперь пришло время поговорить о множественном наследовании в Java. Т.е о возможности быть наследником сразу двух и более классов:

1
2
public class MyPoint extends Shape, Circle{
}

Таким образом класс MyPoint является наследником двух классов Shape и Circle. У обоих классов родителей есть метод draw, очевидно что в данном случае лучше взять не абстрактный метод, но что делать, если оба класса содержат не абстрактные методы с одинаковой сигнатурой?
Из-за проблем связанных с множественным наследованием в Java его нет. Вместо него, для решения аналогичных задач придумали интерфейсы.

Категория: Java | Добавил: ghost_mod (29.09.2016)
Просмотров: 473 | Рейтинг: 0.0/0
Всего комментариев: 0
Имя *:
Email:
Подписка:1
Код *: