2017-01-27 1 views
1

Ruby docs을 보면 클래스 Object의 인스턴스 메소드가 모듈 Kernel에 포함되어 있습니다.Ruby 클래스가 Object 클래스에서 상속받는 방법

그러나 an article에서이 라인 :

BasicObject 클래스는 루비에서 모든 클래스의 부모 클래스입니다. 따라서 명시 적으로 재정의하지 않는 한 모든 객체에서 해당 메서드를 사용할 수 있습니다. Ruby 1.9 이전에는 Object 클래스가 클래스 계층 구조의 루트였습니다. 새로운 클래스 BasicObject는 그 목적을 제공하고 Object는 BasicObject의 서브 클래스입니다. BasicObject는 매우 간단한 클래스이며, 자체 메서드는 거의 없다. Ruby에서 클래스를 만들 때 명시 적으로 수퍼 클래스를 지정하지 않으면 Object를 확장하고 대부분의 프로그래머는 BasicObject를 사용하거나 확장 할 필요가 없습니다.

클래스를 만드는 것은 클래스 Object를 확장 것을 말한다.

저의 지식은 extend입니다. 모듈이 가지고있는 인스턴스 메소드를 클래스 메소드와 동일한 방법으로 변환 할 수 있습니다.

기술적으로 클래스가 생성 될 때 포함하지 말고 Kernel을 확장한다는 것을 의미합니까?

그런 경우 어떻게 작동합니까?

+0

[이 게시물을보십시오] (http://stackoverflow.com/questions/8894817/whats-the-difference-between-object-and-basicobject-in-ruby) – prashu132

+0

감사합니다 Prashu. 비록 Object의 확장이 모듈 관계의 측면에서 어떻게 작동하는지에 대한 나의 질문에 대한 연결을 볼 수는 없다. Object가 (기본적으로) 깨끗한 슬레이트 클래스 인 BasicObject로부터 상속 받았다고합니다. –

+0

클래스에서 클래스를 상속하지 않으면 기본적으로 Object 클래스를 상속하며 BasicObject 클래스를 상속합니다. 클래스 (BasicObject 제외) 클래스를 상속받는 경우 부모 클래스는 Object 클래스를 상속하므로 동일한 루비 계층 구조를 유지합니다. BasicObject와 그 하위 클래스 (Object가 아닌)는 간단한 루비 계층을 사용하지 않고 간단한 사용을 위해 클래스를 제공합니다. – prashu132

답변

관련 문제