Square에 Rectangle 클래스의 상속 클래스를 만드는 것이 LSP (Liskov 대체 원칙)를 위반한다고 말하는 관행에 관한 기사를 읽은 적이 있습니다. 아직 이해가 안되네요. 루비에서 예제 코드를 만들었습니다.사각형 및 사각형 상속에 어떤 문제가 있습니까?
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
아무도 저에게 무슨 문제가 있다고 말할 수 있습니까?
울퉁불퉁 한 공주님? http://www.youtube.com/watch?v=pJTrD3R5cj0 – paxdiablo
와우, 그게 흥미 롭 네요.하지만 꽤 이해가 안되네. – mko
yozloy, 사과, 나는 네가 의미하는 바를 설명하고 싶을지도 모른다고 지적했다. LSP를 인식하지 못하는 사람들은 검색 할 필요가 없습니다. – paxdiablo