2025년 5월 1일 목요일

7-1-1강 객체 지향(캡슐화)

- 러스트는 기본적으로 객체지향을 언어는 아니다. 고유한 방식으로 구현한다.

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
*/

댓글 없음:

댓글 쓰기