Flutter/Dart

Dart class 캡슐화 (Getter, Setter, 접근제한자)

오늘도개발 2023. 4. 19. 17:10

 1. 캡슐화 란?

 

 - 내부 데이터를 안전하게 보호하기 위해 사용한다.

 

 - 개발한 사람과 사용하는 사람이 다른 경우 손쉬운 사용을 위함 ( ex, 리모컨; 내부구조를 모르지만 버튼 조작으로 손쉽게 사용할 수 있음)

 

 - getter, setter 로 접근하며 접근 제한자로 문법적으로 사용할 수 잇는 허용범위를 지정할 수 있다.( 권한설정; 내부자는 수정을 할 수 있지만 외부에서는 수정을 할 수 없도록 제한 )

 

2. class 캡슐화

 - 기본적으로 클래스의 멤버변수는 _(private)로 외부 접근을 제한하고 필요한 경우 getter, setter 로 접근하여 사용한다.

 

  class Student{

    String _name = '이름';

 

    set name(value){

        _name = value;

    }

 

   get name => _name;       // String get name { return _name; } 과 동일

 

  }

 

* Java 와 유사하지만 getter, setter 를 좀 더 효율적으로 작성할 수 있도록 문법이 조금 다르게 작성될 수 있다.

 

3. 접근 제한자

 

 - 클래스 내부에서만 사용될 경우(private) 변수를 정의 할 때 , 변수명 앞에 _ 를 붙여서 표기하면 된다.

 

 - public 인 경우 별도의 표기없이 정의 및 사용하면 된다.

 

class Student {

  String _name = '이름';

  set name(value) {
    _name = value;
  }

  get name => _name; // String get name { return _name; } 과 동일

  // java 방식도 가능
  String getName() {
    return _name;
  }
  
}

void main(List<String> args) {
  Student stu = Student();

  //set name 으로 멤버 변수 설정
  stu.name = 'jhon';

  // get name으로 멤버 변수 값 불러오기
  print(stu.name);

  // java 방식
  print(stu.getName());
  
}