본문 바로가기
TIL

dart4 - class1

by 은지:) 2023. 12. 10.
728x90
반응형

 

 

내가 아는 클래스 기본 문법

 

Idol Class 를 만들고 안에

name 변수를 만들었다고 했을 때

같은 괄호 내에서 변수를 사용하려면 this 를 사용해서 값을 불러옴

 

class를 사용할 땐 인스턴스화 해서 사용함

 

 

 

 

그리고 밑엔 응용편

void main() {
  
  Idol redVelvet = new Idol(
  '슬기',
  '레드벨벳'
  );

  redVelvet.sayName();
  
}

class Idol {

 // 변수 선언
  String name;
  String group;
  
  // 인스턴스 생성시 인자를 받음 constructor
  Idol(
    String name,
    String group,
  ) : this.name = name,
  this.group = group;
  
  
  void sayName(){
    print('제 이름은 ${this.name} 입니다');
  }
}

 

자바스크립트는 constructor 를 선언해줘야하는데

dart는 따로 선언 필요 없고 같은 이름으로 인자 받을 수 있게 만들어 놓는 듯

 

기본 값이 필요하다 했을 때


Idol ({String name : "은지"}) : this.name = name

 

이런식으로 쓰면 됨

 

 

class 내부에서 값 잘 들어왔나 콘솔 찍을 때는

 

Idol(String name) : this.name = name{ print('지민 $name'); }

 

이렇게 찍음

 

 

 

 

응용편2

void main() {
  // 인스턴스화
  Idol bts = Idol('rm');
  bts.sayName();

  // Map을 이용한 인스턴스화
  Map<String, dynamic> inputData = {'name': 'jimin'};
  Idol anotherBTSMember = Idol.fromMap(inputData);
  anotherBTSMember.sayName();
}

class Idol {
  String name;

  // 생성자
  Idol(String name) : this.name = name{
    print('지민 $name');
  }
 

  // Map을 이용한 생성자
  Idol.fromMap(Map<String, dynamic> input) : this.name = input['name'];

  void sayName() {
    print('제 이름은 $name');
  }
}




지민 rm
제 이름은 rm
제 이름은 jimin

 

 

이때 Idol.fromMap 으로 인스턴스화 했기 때문에

Idol 생성자는 안 거침

 

이게 자바스크립트와의 차이

 

 js 는 1클래스 당 1생성자임

dart는 1클래스 당 여러 생성자

 

 

728x90
반응형

'TIL' 카테고리의 다른 글

커링  (1) 2023.12.26
dart4 - class2  (0) 2023.12.10
const test ()=>()=>{}  (0) 2023.12.07
dart 3 <= enum, 타입 관련 이야기라 재밌음  (1) 2023.11.29
dart 2  (0) 2023.11.27

댓글