相关疑难解决方法(0)

Square和Rectangle继承有什么问题?

我已经阅读了一些关于使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
Run Code Online (Sandbox Code Playgroud)

谁能告诉我它有什么问题?

ruby oop liskov-substitution-principle

6
推荐指数
1
解决办法
2471
查看次数

标签 统计

liskov-substitution-principle ×1

oop ×1

ruby ×1