OOP 핵심개념 클래스로 설계도를 만들고 실제 사용하는건 인스턴스 라고 생각 하면 된다.
ex 붕어빵 기기 => 붕어빵(크림맛, 녹차맛, 김치맛 ..... )
클래안에 아래와 같은 것을 정의 하는 방법
이게 가장 기본적인 클레스 구조임
생성자라는 것은 이전글에서 소개했듯이 함수에 파라미터의 값에 따라 반환 값과 내부에 값이 각각 달라지는 것 처럼 처럼 럼 클래스에서도 각각 값을 인스턴스에 대입해주기 위해서 사용하는 것인데
기본적으로 대부분의 객체지향 언어가 그렇듯이 클래스 명을 그대로 입력해서 들어오는 변수에 대한 정의 와 이 값을 넣어줄 변수들을 정의 해주면 됨
통상적으로 외부 매개변수와 내부 클레스 변수(멤버변수)의 이름을 같게 사용하고 클래스 변수를 나타내게 해주는
this 키워드를 사용함 즉 this(클래스),name(맴버변수에) = name(외부 변수 값을 넣어주겠다)
Idol(this.name, this.members);
위에 코드와 사진에 코드는 같은 기능을 하는데 좀더 쉽게 작성 하는 방법임 알아서 순서대로 클래스 맴버 변수에 값을 넣겠다는 문법임 지우고 위에코드 사용해도 전~혀 문제 없음
위에서 설명한건 일반 생성자임
네임드 생성자
하지만 좀더 특히하게 사용할수 있는 네임드 생성자가 있음
참고 지식
인자( Argument ) 는 어떤 함수를 호출시에 전달돼는 값을 말하고
매개 변수( Parameter ) 는 그 전달된 인자를 받아들이는 변수다.
클래스명.원하는이름(자료형 매개변수)
class Idol{
String name ;
List<String> members;
// 일반생성자
const Idol(this.name, this.members);
// 네임드 생성자
Idol.fromList(List values)
: this.members = values[0], // 리스트 자료형 매개변수로 0번째 즉 1번째 입력값 this.members 넣고
this.name = values[1]; // 2번째 입력값 this.name 에 넣음
void sayHello()
{
print("안녕하세요 ${this.name}입니다.");
}
void introduce(){
print("저희 멤버는 ${this.members}가 있습니다.");
}
}
클레스를 정의 했으니 사용해봐야함
일반 생성자를 통해 생성
참고로 다른 객체 지향 언어에서는 인스턴스 만들때 new 키워드를 사용하는데 dart는 그런게 필요 없음
즉 Idol blackPink = Idol( ~~~) == Idol blackPink = new Idol( ~~) 같다는 것임
Idol blackPink = Idol(
"블랙핑크",
['지수', '제니', '리사', '로제'],
);
print(blackPink.name);
print(blackPink.members);
blackPink.sayHello();
blackPink.introduce();
네임드 생성자를 통해 생성
네임드 생성자 사용할때 지정했던 이름 사용해서 만들면 됨
Idol BTS = Idol.fromList(
[
['RM', '진', '슈가', '뷔', '정국'],
"BTS",
]
);
print(BTS.name);
print(BTS.members);
BTS.sayHello();
BTS.introduce();
둘중 어느것을 통해 만들어도 상관 없음 생성자 2개만들어서 둘다 사용해도 상관 없음
'APP > Dart' 카테고리의 다른 글
dart 객체지향 프로그래밍 Getter and Setter (0) | 2022.08.16 |
---|---|
dart 문법 총 정리 OOP (객체지향 프로그래밍) immutable 프로그래밍 이란? , 생성자 앞에 const 키워드를 붙이면 어떻게 되는가 (0) | 2022.08.04 |
dart 문법 총 정리 5. typedef (0) | 2022.07.26 |
dart 문법 총 정리 4. 사용자 정의 함수, Enum (0) | 2022.07.26 |
dart 문법 총 정리 3. 조건문과 반복문 (0) | 2022.07.26 |