Dart 접근지정자와 getter, setter

Ruinak·2021년 9월 22일
0

Dart

목록 보기
8/11
post-thumbnail

접근지정자

  • dart는 기본이 public이고 언더스코어를 붙이면 private입니다.
  • public = 모든 파일에서 접근이 가능합니다.
  • private = 해당 파일만 접근이 가능합니다.(해당 클래스 X)
  • _를 앞에 붙이면 private 접근 지정자로 사용됩니다.
// 접근 지정자 get, set

class Animal {
  // dart는 기본이 public이고 언더스코어를 붙이면 private
  // public = 모든 파일에서 접근이 가능함
  // private = 해당 파일만 접근 가능(해당 클래스 X)
  // _를 앞에 붙이면 private 접근 지정자
  String _name = "";
}

// 같은 파일이니까 가능
class Test {
  void play(){
    Animal animal2 = Animal();
    animal2._name = "원숭이";
  }
}

main(){
  // dart는 new 키워드 생략 가능
  Animal animal1 = Animal();
  animal1._name = "호랑이";
  print("animal1.name = ${animal1._name}");
}

get, set

  • get, set 생성 과정 : private 선언 -> 생성자 생성 -> get, set 생성

Car.dart

// get, set 생성 과정 : private 선언 -> 생성자 생성 -> get, set 생성
class Car {
  String _name = "";

  // 위 변수에 접근하려면 초기화 생성자가 필요함
  // 초기화 생성자
  Car(this._name){}
  // 오버라이딩이 안되므로 새로운 생성자 생성
  Car.origin();

  String getName(){
    return _name;
  }

  // getName을 축약해서 사용하는 방법
  // 왜 만들었는지 모르겠다고 하심
  // 생긴게 변수처럼 생겼는데 사용도 변수처럼 사용
  String get name {
    return _name;
  }

  setName(String v){
    _name : v;
  }

  set name(String v) {
    _name = v;
  } 
}

test12.dart

// 접근 지정자 get, set

import 'car.dart';

main(){
  // dart는 new 키워드 생략 가능
  Car car = Car("아반떼");
  // get, set 없이는 출력이 안 됨
  // print("자동차 ${car._name}");
  // getter 사용
  print("자동차 ${car.getName()}");
  print(car.name);
  // setterr 사용
  car.name = "제네시스";
  print(car.name);

  // 새로운 형식의 인스턴스를 만들기 위해서 생성자를 하나 더 추가
  Car car2 = Car.origin();
}
profile
Nil Desperandum <절대 절망하지 마라>

0개의 댓글