팩토리 생성자는 factory 예약어로 선언합니다. 팩토리 생성자 역시 객체를 생성할 때 호출할 수 있지만, 생성자 호출만으로 객체가 생성되지는 않습니다. 팩토리 생성자에서 적절한 객체를 반환해 줘야 합니다. 결국 팩토리 생성자는 클래스 외부에서는 생성자처럼 이용되지만 실제로는 클래스 타입의 객체를 반환하는 함수입니다. 아래 코드에서 MyClass() 생성자는 factory 예약어가 붙었으므로 오류가 발생합니다. 그 이유는 팩토리 생성자로 선언했으면서 객체를 반환하지 않았기 때문입니다.// 팩토리 생성자 잘못된 선언 예class MyClass { factory MyClass () { // 오류 }} factory로 선언한 생성자는 반드시 객체를 반환해 주어야 합니다. 그럼 null객체를 반환하는 다음..
전체 글
다트 언어에서는 클래스의 생성자를 다양하게 이용할 수 있는데 명명된 생성자는 가장 중요하고 가장 자주 사용합니다. 명명된 생성자는 이름이 있는 생성자라는 의미로, 한 클래스에 이름이 다른 생성자를 여러 개 선언하는 기법입니다. 다른 프로그래밍 언어에서도 생성자를 여러 개 선언할 수 있는 오버로딩 기능을 제공하지만, 똑같은 이름으로 매개변수나 변환 타입만 다르게 선언해야 하므로 다트와는 차이가 있습니다. 예를 들어 다음 코드는 자바 언어로 생성자 오버로딩을 구현한 예입니다. 하지만 다트에서는 이러한 오버로딩을 지원하지 않습니다. 대신 다른 기법으로 생성자를 여러 개 선언할 수 있습니다.// 자바로 작성한 생성자 오버로딩public class MyClass { MyClass() {} MyClass(int..
생성자 선언생성자는 클래스에 선언되어 객체를 생성할 때 호출되는 함수입니다. 모든 클래스는 생성자를 가지며 만약 개발자가 만들지 않으면 컴파일러가 자동으로 클래스와 같은 이름으로 기본 생성자를 만들어 줍니다.// 클래스 선언class User {} 코드에서 User 클래스에는 생성자를 작성하지 않았습니다. 하지만 다트에서 생성자가 없는 클래스는 존재할 수 없습니다. 따라서 컴파일러는 기본 생성자를 자동으로 추가하므로 오른쪽처럼 선언한 것과 같습니다.// 기본 생성자를 추가한 예class User { User() { }}여기까지는 다른 객체지향 언어와 같습니다. 하지만 다트에서는 명명된 생성자, 팩토리 생성자, 상수 생성자 등 다양한 형태로 정의할 수 있습니다. 또한 생성자의 매개변수로 멤버를 초기화하는..
클래스 선언과 생성 다트에서 클래스는 다른 객체지향 언어와 마찬가지로 class라는 예약어로 선언합니다. 그리고 클래스에는 변수와 함수를 멤버로 선언할 수 있습니다.// 클래스 선언class User { String name = 'kkang'; int age = 10; void sayHello() { print('Hello $name, age: $age'); }}이렇게 선언한 클래스를 이용하려면 객체를 생성해야 합니다. 그리고 생성한 객체 이름으로 클래스에 선언한 변수와 함수를 이용합니다. 객체를 생성할 때는 new 연산자를 이용해도 되고 생략해도 됩니다. 즉, new 연산자를 이용하든 이용하지 않든 클래스의 생성자를 호출하면 객체를 생성할수 있습니다.// 객체 생성User user1 =..