正方形是否是长方形的子类?

依据里氏代换原则,子类型必须能够替换掉它们的父类型,子类继承了父类,那么子类可以以父类的身份出现 — 在软件中,把父类都替换成它的子类,程序的行为没有变化。

所以从这个角度而言,正方形并非是长方形的子类。

举个例子,如果长方形中存在一个方法,目的是改变长宽的值,但是正方形只有一个边长,那么就可能出现问题。例如如下代码。

上面是椭圆形的代码。可以改写成矩形来解释这个问题,不过太麻烦我还是先做后面的题目了。