3. 객체를 생성하는 방법2 문법

강재영's avatar
Sep 26, 2024
3. 객체를 생성하는 방법2 문법

다트에서는 자바와 같은 오버로딩 기능을 제공하지 않는다.

💡
선택적 매개변수기본값 설정, 그리고 초기화 리스트를 통해 오버로딩과 비슷한 방식으로 객체를 초기화할 수 있습니다
 

선택적 매개변수 {} 중괄호 사용

class person { int? age; String? name; //선택적 매개변수 - dart의 오버로딩 person({ this.age, this.name}); //required는 반드시 값을 넣는다는 말 무조건 받아야함 }
(Dart)에서 선택적 매개변수는 중괄호 {}로 감싸서 정의되며, 이 경우 해당 매개변수는 객체 생성 시 전달하지 않아도 됩니다. 만약 값을 전달하지 않으면 해당 매개변수의 값은 null로 설정된다.
 
void main() { Person p1 = Person(); // 매개변수 전달하지 않음 (null 값) Person p2 = Person(age: 25, name: "Alice"); // 모든 매개변수 전달 print(p1.age); // null print(p1.name); // null print(p2.age); // 25 print(p2.name); // Alice }
결과를 보면 알겠지만 null이 나오니 필드에 ?를 사용해서 null을 허용해야한다.
또한 선택적 매개변수의 순서를 바꿔도 동작한다. 자바의 bulid와 유사하다
 

반드시 전달해야하는 required

class Dog { int age; String name; // 선택적 매개변수와 required 사용 Dog({required this.age, required this.name}); } void main() { Dog myDog = Dog(age: 3, name: "Buddy"); // 정상 // Dog myDog = Dog(age: 3); // 에러: name 값이 빠짐 }

required의 역할

선택적 매개변수는 기본적으로 전달하지 않아도 되는 값입니다. 하지만 경우에 따라 특정 필드는 필수로 받아야 할 때가 있습니다. 이때, 선택적 매개변수에 required 키워드를 추가하여 반드시 값이 전달되도록 강제할 수 있습니다.
 

선택적 매개변수에서 **기본값(default value)**을 지정하는 문법

class Cat { int? age; String? name; // 선택적 매개변수와 기본값 설정 Cat({this.age, this.name = "토토"}); }
  • this.name = "토토": name 필드는 기본값 "토토"가 지정되어 있습니다. 객체를 생성할 때 name 값을 전달하지 않으면 자동으로 "토토"가 할당됩니다.
  • Nullable 타입int?null일 수 있는 값이므로, 기본값을 설정하지 않았고, name은 기본값 "토토"가 있습니다. 즉 ? 필요없음
 
 
 
Share article

강재영 블로그