7 Открытое и закрытое наследование

1 Является ли квадрат прямоугольником

Допустим, квадрат поддерживает все операции из класса прямоугольник.

=> значит можно сделать setWidth(1) и setHeight(2)

=> значит это не квадрат

--

квадрат - это НЕ прямоугольник!

2 Наследование реализации и композиция

Цели наследования:

  1. Наследование реализации (закрытое) - чтобы 2-ой раз не писать тот же код (в Java не бывает)
  2. Наследование интерфейса (открытое) - чтобы работал принцип подстановки (подстановка наследника на место родителя).
Наследование Композиция + делегирование
                                              
public void push(double val){
    super.insert(val, super.getSize());
}
public void push(double val){
    v.insert(val, v.getSize());
}

Везде, где это возможно, предпочитайте наследованию композицию!

3 Задание на +1

Краткая суть


...
public void setSide(double s){
    r.width=s;
    r.height=s;
}
public double getArea(){
    return r.getArea();            // делегирование!
}
...

Подробно

Подстраницы (1): Задача про квадрат
Comments