클래스 생성자에 {}를 넣는 이유

테디준·2022년 7월 18일
0

코드를 짜면서 변수 설정을 어떻게 해야 할지 아직도 헷갈린다. 그래서 생성자에 대해 알게 된 것을 정리해본다.

class Person {
  String name;
  int age;
  
Person({String name, int age}) {
this.name = name, 
this.age = age, 
 }
}
위 코드는 Person Class의 생성자이다. 생성자는 class에서 일반 메소드와 비슷하지만, 생성할 때 한번만 호출이 가능한 메소드이며, 특징은 return type을 암시하지 않는다는 것이다. 당연히 해당 class의 객체를 생성하니 굳이 써줄 필요가 없다.
그렇다면 어떻게 하면 MaterialApp(home: ~) 처럼, Named Argument를 사용하여 인자를 콕 찝어서 할당할 수 있을까?
정답은 바로 { } 을 활용하는 것이다. 생성자에서 인자들을 {} 으로 감싸면 된다. 그러면 argument는 이제 optional로 바껴서, 빈 값으로 만들어도 되고, 순서도 전혀 상관이 없다. 생성자의 argument가 10개, 100개 ... 로 많을 때 쓴다. 심지어 argument에 직접 값을 입력해줄 수도 있다.
class Person {
  String name;
  int age;
  
const Person(this.name, this.age, {key? key}) : super(key, key);
단순히 위 Person class의 생성자처럼 입력값이 바로 속성의 값으로 할당되는 경우에는 약식으로 생성자를 설정할 수 있다. 이게 처음 코드를 짜면서 가장 많이 본 형태다.
정리하면서도 또 헷갈리고 있다. 변수 설정과 그 위치를 더 정확히 알게 되는 날 다시 수정해야겠다.

0개의 댓글