자본 엄.슴.
Ruby 객체(2) 본문
Object
이전에 클래스와 함께 간단히 객체에 대해 공부했었다. 그런데 루비에서는 모든 것이 객체이기 때문에 객체를 좀 더 다뤄볼 필요성이 있다. 루비에서는 심지어 클래스까지도 전부 다 객체다.
우리가 만든 객체는 기본적으로 주어진 몇몇 메서드들을 사용할 수 있다.
class Human
def initialize(name)
@name = name
end
end
kim = Human.new "Kim"
puts kim.class
puts kim.object_id
puts kim.nil?
결과
Human
26665240
false
class메서드는 해당 객체가 어떤 클래스의 인스턴스인지 알려주는 메서드이다. object_id메서드는 객체의 고유 id를 반환하고 nil?메서드는 해당 객체가 nil인지 아닌지를 불린으로 반환한다. 우리는 분명 어떤 메서드도 정의하지 않았지만 몇몇 기본 메서드를 사용할 수 있다. 이것은 대부분의 루비 클래스가 Object클래스를 상속 받고 있기 때문이다. 클래스가 어떠한 다른 클래스도 상속 받지 않으면 기본적으로 Object클래스를 상속 받는다.
class Human
def initialize(name)
@name = name
end
end
puts Human.superclass
결과
Object
객체 변경과 복사
freeze 메서드는 객체 변경을 금지시킬 수 있다. 변경이 금지된 상태를 frozen 되었다고 하며 객체가 frozene된 상태인지 확인하고 싶으면 frozen?메서드를 사용하면 된다. 일단 freeze된 객체는 다시 원래대로 돌아올 수 없다.
class Human
def initialize(name)
@name = name
end
end
kim = Human.new "Kim"
kim.freeze
puts kim.frozen?
결과
true
'Ruby' 카테고리의 다른 글
| Ruby 심볼 (0) | 2019.02.08 |
|---|---|
| Ruby 문자열 (0) | 2019.02.06 |
| Ruby 모듈 (0) | 2019.01.31 |
| Ruby 싱글톤 메서드 (0) | 2019.01.30 |
| Ruby 접근 제어자, 상속 (0) | 2018.12.11 |
Comments