Tag: lsp

Square和Rectangleinheritance有什么问题?

我已经阅读了一些关于使Square成为Rectangle类的inheritance类的做法的一些文章,这说明它违反了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 谁能告诉我它有什么问题?