開始使用免費開始

正方形與長方形

一個經典且違反 Liskov 置換原則(LSP)的案例是「圓形-橢圓問題」,有時也稱作「正方形-長方形問題」。

直覺上,你可能會想先定義一個 Rectangle 類別,帶有 hw 屬性(高度與寬度),然後再定義一個繼承自 RectangleSquare 類別。畢竟,正方形「是」長方形的一種!

可惜,這樣的直覺在物件導向設計中並不適用。

本練習屬於課程

Python 物件導向程式設計

檢視課程

動手互動練習

試著完成這個範例程式碼,體驗一下這個練習。

# Define a Rectangle class
____

# Define a Square class
____
編輯並執行程式碼