접근지정자
- 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();
}