반응형
선언
클래스는 def 클래스명 - end
로 선언합니다.
기초 1의 내용과 같이, 클래스명은 파스칼 케이스로 짓는 것이 관례입니다.
함수 스코프와는 관계 없는 인스턴스 변수
클래스 내에서 사용되는 인스턴스 변수(@var
)는 선언 위치와 상관 없이 클래스 내의 어디에서든 접근할 수 있습니다.
class Apple
def set_phone(phone_name)
@phone = phone_name
end
def print_phone
puts @phone # 접근이 안될 것 같지만 가능하다
end
end
접근제어
기본적으로 클래스 내 모든 메소드는 public
이지만 필요에 의해 바꿀 수 있습니다.
...
public
def func1
...
end
private
def func2
...
end
protected
def func3
...
end
...
혹은 이런식으로도 가능합니다.
def func1
...
end
def func2
...
end
private :func1
protected :func2
속성
클래스 내부가 외부에 노출되는 것을 속성이라고 합니다.
이 속성은 클래스가 생성된 뒤 .
으로 접근할 수 있습니다.
class Apple
def phone
"iPhone"
end
end
apple = Apple.new
apple.phone # iPhone
접근과 수정 메소드를 자동으로 생성해주는 attr
attr_reader
로 변수를 선언하면, 클래스 외부에서 직접 읽을 수 있는 메소드를 함께 생성(Getter)해줍니다.attr_accessor
로 변수를 선언하면, 클래스 외부에서 직접 접근할 수 있는(쓰기 가능) 메소드를 함께 생성(Getter&Setter)해 줍니다.
class Company
attr_reader :name
attr_accessor :product
def initialize(company_name)
@name = company_name
end
end
apple = Company.new("Apple")
apple.product = "iPhone"
puts apple.name, apple.product
물론 직접 접근은 캡슐화를 위반하므로 가급적 안 쓰는 게 낫겠죠.
'개발 > Ruby on Rails' 카테고리의 다른 글
Bundler MYSQL2 설치 중 에러 해결하기 (0) | 2020.06.14 |
---|---|
Mac의 zsh에서 rbenv 사용하기 (0) | 2020.05.31 |
Ruby : 기초(5) 메소드 (0) | 2020.03.14 |
Ruby : 기초(4) 해시와 심볼 (0) | 2020.03.14 |
Ruby : 기초(3) 반복 (0) | 2020.03.13 |