클래스 :
일종의 설계도 (데이터가 보유할 속성, 기능을 정의)
인스턴스 :
클래스를 사용해서 객체를 선언시, 해당 객체를 일컫음
* 인스턴스화 되어야 실제 사용할 수 있는 데이터가 생성된다!
* 클래스 :
class Idol{
String name = '블랙핑크';
void sayName(){
print('저는 ${this.name}입니다.');
print('저는 $name입니다.');
}
메서드 : 클래스에 종속되는 함수
this 키워드 : 클래스 내부의 속성 지칭
(* 스코프 안에 같은 속성 이름이 하나만 존재할 경우 this 생략 가능)
* 생성자 :
클래스의 인스턴스를 생성하는 메서드
class Idol{
final String name;
//생성자 선언
Idol(String name) : this.name = name;
void sayName(){
print('저는 ${this.name}입니다.');
}
}
생성자에서 입력받을 변수 - 일반적으로 final 으로 선언
: 인스턴스화한 다음에 변수 값 변경하는 실수를 막기 위함!
생성자 - 클래스와 같은 이름 사용
//생성자 선언
// 클래스와같은 이름 (매개변수 지정) : 입력받은 매개변수가 저장될 클래스 변수 지정
Idol(String name) : this.name = name;
class Idol{
final String name;
//this 사용시
// 해당되는 변수에 자동으로 매개변수 저장됨
Idol(this.name);
void sayName(){
print('저는 ${this.name}입니다.');
}
}
* 네임드 생성자 :
네임드 파라미터와 유사
클래스 생성하는 여러 방법 명시하고 싶을때 사용
class Idol{
final String name;
final int membersCount;
// 1) 생성자
Idol(String name, int membersCount)
: this.name = name,
: this.membersCount = membersCount;
// 2) 네임드 생성자
// {클래스명.네임드 생성자명}
Idol.fromMap(Map<String, dynamic> map)
: this.name = map['name'],
this.membersCount = map['membersCount'];
void sayName(){
print('저는 ${this.name}입니다. 멤버는 ${this.membersCount}명 입니다.');
}
}
void main(){
// 기본 생성자 사용
Idol blackPink = Idol('블랙핑크', 4);
blackPink.sayName();
// 네임드 생성자 (fromMap) 사용
Idol bts = Idol.fromMap({
'name': 'BTS',
'membersCount': 7,
});
bts.sayName();
}
* 프라이빗 변수 :
일반적인 언어에서의 프라이빗 변수? - 클래스 내부에서만 사용하는 변수
다트언어에서의 프라이빗 변수? - 같은 파일에서만 접근 가능
class Idol{
// _로 시작하는 변수? : 프라이빗 변수
String _name;
Idol(this._name);
}
void main(){
Idol blackPink = Idol('블랙핑크');
// 같은 파일에서는 _name 변수에 접근 가능
// 다른 파일에서는 _name 변수에 접근 불가능
}
* 게터 / 세터 :
getter : 값을 가져올 경우
setter : 값을 지정할 경우
게터세터 사용시에 어떤 변수 노출, 변경 가능하게 할지 유연하게 정할 수 있음
(요새는 setter 거의 사용하지 않음)
class Idol{
String _name = '블랙핑크';
// getter
// 매개변수 정의 안함
// 프라이빗일 경우에 게터 사용시 간접적으로 _name 변수에 접근 가능
String get name{
return this._name;
}
// setter
set name(String name)
this._name = name;
}
}
'Flutter' 카테고리의 다른 글
[Flutter] 위젯(Widget) 소개 (0) | 2023.06.08 |
---|---|
[Flutter] 플러터 객체지향 프로그래밍 - (4) 제네릭과 static, 캐스케이드 연산자 (1) | 2023.06.08 |
[Flutter] 플러터 객체지향 프로그래밍 - (3) 믹스인과 추상 (0) | 2023.06.08 |
[Flutter] 플러터 객체지향 프로그래밍 - (2) 상속 및 오버라이드, 인터페이스 (0) | 2023.06.08 |
[Flutter] 플러터의 스키아(Skia) 엔진 및 구조 (0) | 2023.06.02 |
댓글