ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Constructor 생성자
    w5 2022. 10. 2. 18:10

    Constructor 는 이름 그대로 클래스를 생성하는 역할을 한다.

    클래스 객체에서 사용할 메모리를 할당하는..

     

    클래스는 다음과 같은 구조를 같는다. 

    ▶ 참고 :Class vs Instance (Object)

     

     

    클래스 내에 Constructor 코드를 작성하게 되는거다. 

    Constructor  코드를 작성하지 않으면 플러터가 자동으로 생성한다. ^^

     

    클래스 코드의 예를 보자.

    Idol 을 만드는 클래스다. 

    Idol 은 이름 name이 있고 소속된 그룹  group이 있다. 

    그리고 이름을 말하는 기능(메서드) sayName 을 가지고 있다. 

     

    자, 이제 Idol 을 만들어보자.  

    이름 name 과 소속된 그룹 group 을 Idol 클래스 전달해서 seulgi 라는 Idol 을 만들었다. 

    - seulgi 는 Idol 클래스의 인스턴스

     

     

    정리하면, 

     

    클래스 객체를 만들 때, 클래스의 특정한 값으로 생성할 수 있고 

    그러기 위해서 인스턴스를 생성할 때 인자의 값을 클래스에 전달한다. 

    이 경우 Constructor 모습은 다음과 같다. 

     

    Syntax

    어디서 많이 본 것 같은..... 아하! 함수와 똑같이 생겼네..... ^^ 

     

     

     

    Named Constructors

    생성자가 함수와 똑같이 생겼다면.. 
    함수에서 named parameter 를 쓰는 것처럼 constructor 도 같은 방식으로 사용할 수 있을까? 

     

    정답은 Yes !! 

     

    named parameter 는 어떻게 쓰나?    → parameter_list 를 {   }  으로 감싸주면 된다.   

     

    위의 Idol Class 에 named parameter 를 적용해보면  

    named Constructor

    Idol 을 만들때는 

    어떤 인자어떤 값을 보낼지를 써준다. 

    레드벨벳이 그룹이고 이름이 슬기 라는 것을 딱 봐서 알 수 있다. 

    슬기가 그룹이고 레드벨벳이 이름이라고 착각할 일이 없다.

    따라서 생성자에 인수목록에 쓴 순서대로 인수를 적을 필요가 없다. 

     

    named parameter 가 아닌경우, 

    함수(or 생성자)는 외부에서 여러 인자를 전달할 때는 약속된 순서(함수나 생성자 코드에서 기재된 순서)대로 인자를 적어주어야 한다.  

     

    나이, 몸무게, 발사이즈 값을 전달 받는 people 함수(or 생성자)가 있다고 해보자 

    나이 26, 몸무게 40, 발사이즈 40 인 jane 을 만들고 싶다. 

    그러면 생성자가 나이, 몸무게, 발사이즈 순서대로 보내라고 했는지, 몸무게, 발사이즈, 나이 순서대로 보내라고 했는지를 확인하고 그 순서에 따라서 값을 보내야 원하는 jane 을 만들 수 있는 것이다. 

     

    나이, 몸무게, 발사이즈 순으로 보내라고 했는대  40, 40, 26 순으로 생성자에게 보내면 

    생성자는 나이가 40, 몸무게 40, 발사이즈가 26 이라고 생각하게 되니

    원하는 것과 다른 jane 이 만들어지는 참사가 일어나게 된다. 

     

     

     

    ▶참고: https://youtu.be/9NSlc_CRiLI  

    'w5' 카테고리의 다른 글

    [Class] MaterialApp  (0) 2022.09.27
    [Class] Scaffold  (0) 2022.09.26

    댓글

Designed by Tistory.