Square を Rectangle クラスの継承クラスにすることは悪い習慣であり、LSP (Liskov 代替原理) に違反しているとの記事を読んだことがあります。まだわかりません。Ruby でサンプル コードを作成しました。
class Rectangle
attr_accessor :width, :height
def initialize(width, height)
@width = width
@height = height
end
end
class Square < Rectangle
def initialize(length)
super(length, length)
end
def width=(number)
super(number)
@height = number
end
def height=(number)
super(number)
@width = number
end
end
s = Square.new(100)
s.width = 50
puts s.height
何が問題なのか誰か教えてもらえますか?