- 러스트는 기본적으로 객체지향을 언어는 아니다. 고유한 방식으로 구현한다.
1. 캡슐화
구조체의 필드와 메서드에 대한 접근 제어를 통해 캡슐화를 구현한다.
기본적인 모든 필드는 private 다.
pub 키워드를 사용하여 외부에 공개할 수 있다.
// 트레잇과 같은 형태로 객체지향에 가까운 프로그램을 작성할 수 있다.
pub struct Student {
id: i32, // private 필드
pub name: String, // public 필드
pub email: String, // public 필드
}
impl Student {
// public 생성자
pub fn new(id: i32, name: String, email: String) -> Student {
Student { id, name, email }
}
// public 메서드
pub fn get_name(&self) -> &String {
&self.name
}
// private 메서드
fn set_name(& mut self, name: String) {
self.name = name.clone();
}
}
fn main() {
let student = Student::new(1, String::from("luna"), String::from("luna@email.me"));
println!("이름: {}", student.get_name());
}
/*실행결과
이름: luna
*/
댓글 없음:
댓글 쓰기