본문으로 바로가기

OOP의 원칙 중 하나인 캡슐화에 따르면 클래스로 분리한 실제 구현 내용 일부를 외부로 부터 감추어 은닉할 필요가 있다.

 

아래 예시와 같은 다음과 같은 코드가 있을 때, 앞에 _가 붙은 변수는 해당 클래스 내부에서만 사용할 수 있게 된다.  (private) 따라서 해당 클래스 외부에서 인스턴스를 만들어 활용할 때, 변환할 수 없게 된다. 

 

즉,

 

Quiz instance = new Quiz();

instance._questionNum = 4;

 

와 같은 조작이 불가능하게 되는 것이다.

import 'questions.dart';

class Quiz {
  int _questionNum = 0;

  List<Questions> _questionBank = [
    Questions('Some cats are actually allergic to humans', true),
    Questions('You can lead a cow down stairs but not up stairs.', false),
  ];

  void nextQuestion() {
    if (_questionNum < _questionBank.length - 1) {
      _questionNum++;
    }
  }

  String getQuestionText() {
    return _questionBank[_questionNum].questions;
  }

  bool getQuestionAnswer() {
    return _questionBank[_questionNum].questionNum;
  }
}

darren, dev blog
블로그 이미지 DarrenKwonDev 님의 블로그
VISITOR 오늘 / 전체