Flutter - 클래스 선언과 인스턴스 생성

2023. 11. 2. 11:40·Flutter
728x90

 

객체지향 개요

데이터 캡슐화(encapsulation)

  • 데이터 추상화(abstraction)
    • 복잡한 문제를 다루기 위해서 불필요한 부분들은 숨기고 중요한 부분만을 표현
  • 재사용의 단위
    • 클래스를 통해 객체 단위로 생성되어 움직인다.
  • 정보은닉(블랙박스)을 실현하는 장치
    • 인터페이스를 제외한 데이터와 함수들을 캡슐 속으로 숨기기 때문에 캡슐화를 통해 정보 은닉이 실현
  • public, private, protected 가시성 키워드가 없다. (자바는 있음)
    • 다트는 기본이 public 변수이고 밑줄(_)을 붙이면 private 변수이다.
    • public 변수는 모든 파일에서 접근이 가능하다.
    • private 변수는 해당 파일에서만 접근이 가능하다. (같은 파일 안에서는 클래서 밖에서도 접근 가능)

속성과 메소드

  • 속성
    • property = attribute = state = member field = member variable
  • 메소드
    • behavior = method = member function

클래스

멤버변수

class Person {
  String? name;
  int age = 20;
}

void main() {
  final p = Person();
  p.name = 'John';
  p.age = 32;

  print('${p.name} is ${p.age} old.');
}

private 변수로 _ 밑줄(underscore)을 변수 앞에 붙여서 만든다. 그렇다고 완전히 접근이 불가한 것은 아니고 같은 .dart 파일 파일 안에서는 접근이 가능하다.

생성자

대입문 생략 생성자

private 변수 초기화 생성자

_ private 필드 이름이 아닌 일반 매개변수 이름 형태로 객체를 초기화 생성할 수 있는 생성자 예시이다.

const 생성자

getter, setter

_ private 필드에 접근할 수 있는 getter, setter 예시이다.

하지만 막상 다트에서는 어차피 공개되는 속성이라면 굳이 private 변수를 만들어 getter, setter를 불필요하게 만들지 말라고 한다.

자바와 C#에서는 모든 속성을 private으로 만들고 메소드 호출로 되어 있는 getter, setter를 두는 것을 권장한다. 하지만 다트는 getter, setter를 메소드를 두더라도 그 형식이 어차피 속성을 그대로 읽고 쓰는 형태이므로 굳이 번거롭게 private으로 만들어 getter, setter를 만들지 말라는 뜻이다.

// GOOD:

class Box {
  var contents;
}
// BAD
class Box {
  var _contents;
  get contents => _contents;
  set contents(value) {
    _contents = value;
  }
}
728x90
LIST

'Flutter' 카테고리의 다른 글

Flutter - Future , async , await  (3) 2023.11.06
Flutter - pubspec.yaml  (1) 2023.11.02
Flutter - 함수  (4) 2023.11.02
Flutter - 타입 검증 연산자  (1) 2023.11.02
Flutter - NullAware  (4) 2023.11.02
'Flutter' 카테고리의 다른 글
  • Flutter - Future , async , await
  • Flutter - pubspec.yaml
  • Flutter - 함수
  • Flutter - 타입 검증 연산자
Mr. Joo
Mr. Joo
  • Mr. Joo
    삽질의 시작
    Mr. Joo
  • 전체
    오늘
    어제
    • 분류 전체보기 (219) N
      • Flutter (70)
      • Android (9)
      • Swift (5)
      • React (11)
      • 인공지능 (4)
      • CS (10)
      • 개발 뉴스 (107) N
      • IT 기기 (1)
      • 알면 유용한 정보 (2)
  • 인기 글

  • 태그

    Dart 기초
    개발 뉴스
    개발 이슈
    오늘의 뉴스
    기술 뉴스
    react
    기술
    Flutter
    앱개발
    이슈
    오늘의 개발 뉴스
    개발
    뉴스
    DART
    앱 개발
    뉴스 모음
    오늘의 기술 뉴스
    플러터
    앱
    오늘의 이슈
  • 최근 댓글

  • 최근 글

  • 250x250
  • hELLO· Designed By정상우.v4.10.3
Mr. Joo
Flutter - 클래스 선언과 인스턴스 생성
상단으로

티스토리툴바