상속은 두 클래스 간의 관계입니다. 상속은 클래스간에 부모 자식 관계를 만듭니다. 이는 코드 재사용을위한 메커니즘이며 공개 클래스 및 인터페이스를 통해 원래 소프트웨어의 독립적 인 확장을 허용하는 메커니즘입니다. 상속의 이점은 계층 아래의 클래스가 상위 계층의 기능을 가져 오지만 고유 한 특정 기능을 추가 할 수도 있다는 것입니다. .
Ruby에서 클래스는 하나의 다른 클래스에서만 상속 할 수 있습니다. (즉, 클래스는 다른 클래스에서 상속 된 다른 클래스에서 상속되는 클래스에서 상속 할 수 있지만 단일 클래스는 한 번에 여러 클래스에서 상속 할 수 없습니다.) BasicObject 클래스는 Ruby의 모든 클래스의 상위 클래스입니다. 따라서 명시 적으로 재정의하지 않는 한 모든 개체에서 해당 메서드를 사용할 수 있습니다.
Ruby는 mixin을 사용하여 단일 클래스 상속을 한 번에 극복합니다.
예를 들어 설명하겠습니다.
module Mux
def sam
p "I am an module"
end
end
class A
include Mux
end
class B < A
end
class C < B
end
class D < A
end
class_name.superclass.name을 사용하여 추적 할 수 있으며이 계층에서 BasicOject를 찾지 못한 경우이 프로세스를 수행 할 수 있습니다. BasicObject는 모든 클래스의 슈퍼 클래스입니다. 클래스 C 계층 트리를보고 싶다고 가정 해 보겠습니다.
C.superclass
=> B
B.superclass
=> A
A.superclass
=> Object
Object.superclass
=> BasicObject
클래스 C의 전체 계층 구조를 볼 수 있습니다.이 방법을 사용하면 부모 클래스에 포함되거나 앞에 추가 된 모듈을 찾을 수 없습니다.
모듈을 포함하여 완전한 계층 구조를 찾는 또 다른 방법이 있습니다. Ruby doc ancestors 에 따르면 . mod에 포함 / 앞에 추가 된 모듈 목록을 반환합니다 (mod 자체 포함).
C.ancestors
=> [C, B, A, Mux, Object, Kernel, BasicObject]
여기서 Mux와 Kernel은 모듈입니다.
http://rubylearning.com/satishtalim/ruby_inheritance.html
https://en.wikipedia.org/wiki/Inheritance_(object-oriented_programming)
B.methods.sort
irb에서 시도하십시오 . 아마도 무언가 당신이 찾는 메소드 이름에 대한 단서를 줄 것입니다.