본문 바로가기
다트(Dart)

다트(Dart) 클래스 / 생성자 / Named Constructor Parameters / Named Constructor

by 인생즐겜러 2023. 3. 15.
728x90
반응형

 

 

 

 

 

순서

  • 클래스와 생성자
  • Named Constructor Parameters
  • Named Constructor

 

 

 

 

 


 

 

 

 

 

클래스와 생성자

 

자바와 방법이 비슷하기 때문에

예시로 넘어가도 될 것 같다.

주석에 설명들을 달아놨다.

 

 

 

void main() {
	var guy = Guy('jin', 20);
    guy.Hello();
}

// 클래스 선언
class Guy{	
	final String name;
    int age;
    
    // 생성자 생성
    Guy(this.name, this.age);
    
    void Hello(){
    	var name = 'Lee';
        // 메소드 안에 같은 이름의 변수가 있다면 this 사용 가능
        // 하지면 없다면 웬만하면 this 안 쓰는 걸 다트에서 추천.
        // this를 안써도 this로 사용 됨.
        print("Hello, I am ${this.name}. ${this.age}");
    } 
}



// 결과
Hello, I am jin. 20

 

 

 

 

 


 

 

 

 

 

Named Constructor Parameters

 

함수에서 파라미터 선언 시,

파라미터 순서에 상관없이 각 key 값을 인식해서 인수들을 넣을 수 있는 것처럼

클래스 생성자에서도 똑같이 적용이 가능하다.

중괄호로 named 파라미터를 설정하고

null 처리를 위해 required 를 썼다. (디폴트 값을 넣는 대신)

아래의 예를 보자

 

 

 

// 클래스 선언
class Guy{	
	String name;
    int age;
    
    // 생성자 생성
    Guy({
    	required this.name,
        required this.age
    });
    
    void Hello(){
        print("Hello, I am ${this.name}. ${this.age}");
    } 
}

void main() {
	var guy = Guy(
    	name : 'jin',
        age : 20,
        );
	guy.Hello();
}



// 결과
Hello, I am jin. 20

 

 

 

 

 

position 으로 만드는 경우,

required가 기본적으로 적용이 되어 있다. ( 한번 생각해봐라, 들어갈 인수 안 넣으면 동작 안하지 않음?)

named 로 만드는 경우, required가 적용이 안되어 있기 때문에 변수에 적용을 하는 것임.

 

 

 

 

 


 

 

 

 

 

Named Constructor

 

다른 이름의 생성자를 만들고 싶을 때 사용하는 방법이다.

마찬가지로 named로 만들수도 있고 position으로 만들 수도 있다.

아래의 예를 보자.

 

 

 

// 클래스 선언
class Guy{	
	late String name, gender;
	late int age, min;
    
    // 생성자 생성
    Guy({
    	required this.name,
        required this.age
    });
    
   // named 를 사용한 Named Constructor
    Guy.man({
    	required String name,
        required int age
    }) : this.name = name,
    	 this.age = age,
         this.gender = 'male',
         this.min = 1;
      
    // position 을 사용한 Named Constructor  
    Guy.woman(String name, int age)
      : this.name = name,
    	 this.age = age,
         this.gender = 'female',
         this.min = 2;     
}



void main() {    
    var guyMan = Guy.man(
    	name : 'lee',
        age : 25,
    );  
  
    var guyWoman = Guy.woman('park', 35); 
}

 

 

 

 

 

 

 

 

 

 

728x90
반응형

'다트(Dart)' 카테고리의 다른 글

다트(Dart) Mixin  (0) 2023.03.15
다트(Dart) Cascade Notation / Enum type  (0) 2023.03.15
다트(Dart) typedef  (0) 2023.03.14
다트(Dart) 연산자  (0) 2023.03.14
다트(Dart) 함수  (0) 2023.03.14

댓글