dart문법_메서드, 생성자, 제네릭클래스
메서드
객체 의 동작 을 정의하는 함수
메서드 는 클래스 에 의존하고, 함수 는 클래스 에 의존하지 않는다는 차이가 있음
인스턴스 메서드 (Instance Method)
class Person {
String name = '홍길동';
int age = 25;
void printName() {
print(name);
}
void printNameAndAge() {
this.printName();
print(age);
}
}
정적 메서드 (Static Method)
: 인스턴스 변수 사용 불가.
class Circle {
static double pi = 3.14159;
double radius = 0;
static void printPi() {
print(pi);
}
void printRadius() {
print(radius);
}
}
void main() {
Circle.printPi(); // 3.14159
Circle.printRadius(); // 오류 발생
}
생성자
객체 를 생성하고, 초기화하기 위해 사용하는 특수한 메서드
기본 생성자 (Default Constructor)
: 기본 생성자. 생략해도 됨.
[클래스 이름]();
class Car {
Car();
}
void main() {
Car car = Car();
}
매개변수 생성자 (Parameterized Constructor)
: 매개변수 를 갖는 생성자
매개변수 를 통해 외부에서 인스턴스 변수 들의 초기값을 설정
객체 생성할 때 매개변수 를 넣지 않으면 오류가 나요
[클래스 이름]([타입] [매개변수 이름]) : this.변수;
class Car {
String name;
List<String> models;
Car(String name, List<String> models)
: this.name = name,
this.models = models;
}
네임드 생성자 (Named Constructor)
pass(많이 사용하지 않을것같음)
제네릭 클래스 (Generic Class)
: 특정 타입에 의존하지 않고, 여러 타입에 대해 동일한 코드를 적용할 수 있어서 재사용성 높은 코드를 짤 수 있음.
class Box<T> {
T value;
Box(this.value);
T getValue() {
return value;
}
}
void main() {
var intBox = Box<int>(10);
print(intBox.getValue()); // 10
var stringBox = Box<String>('Hello');
print(stringBox.getValue()); // Hello
}