Dart언어의 Class에 관한 포스팅입니다.
Class의 형태
Class에는 아래와 같은 요소들로 이루어져 있다.
- Members (클래스 내 변수, 멤버변수라고도 한다.)
- Method (클래스 내에 함수, 멤버함수라고도 한다.)
- Constructor (클래스명과 같은 이름의 함수입니다. 인스턴스화할 때 사용하는 함수로 선언하지 않아도 기본적으로 있는 함수입니다. * 생성자는 리턴타입 없습니다.)
class Student {
String? name;
Student(String name) {
this.name = name;
}
void introduce() {
print(name);
}
}
객체 생성하기
Class를 사용하려면 객체를 생성해야 합니다.
변수에 생성자를 통해 객체를 생성하여 할당하면 클래스가 메모리에 올라가고 이것을 인스턴스화라고 부릅니다.
이제 인스턴스가 된 변수를 객체라고 합니다.
void main() {
Student aiden = Student("aiden");
aiden.introduce(); // "aiden"
}
class Student {
String? name;
Student(String name) {
this.name = name;
}
void introduce() {
print(name);
}
}
💡 객체생성 시 Java에서는 new 키워드를 사용한다. Dart에서는 new 키워드를 써도 되고 생략해도 된다.
위코드에서는 aiden이 객체(인스턴스)가 됩니다.
aiden.name 이런 식으로 객체이름뒤에 '.'을 붙여서 인스턴스변수 및 함수에 접근할 수 있습니다.
Static 멤버
Static 멤버란 객체의 멤버가 인스턴스에 귀속되지 않고 클래스에 귀속되는 것을 의미합니다.
예제코드를 통해 이해해 보겠습니다.
void main() {
Student aiden = Student();
aiden.name = "Aiden";
Student john = Student();
john.name = "John";
Student.school = "highschool";
aiden.introduce(); // "name: Aiden, school: highschool"
john.introduce(); // "name: John, school: highschool"
Student.school = "middleschool";
aiden.introduce(); // "name: Aiden, school: middleschool"
john.introduce(); // "name: John, school: middleschool"
}
class Student {
String? name;
static String? school;
void introduce() {
print("name: $name, school: $school");
}
}
static 멤버의 경우 인스턴스에서 접근할 수 없고 클래스에 클래스에 직접 접근해야 합니다.
인스턴스 별로 다르게 적용되지 않을 내용이라면 static멤버로 진행하여
손쉽게 모든 인스턴스들에 적용할 수 있습니다.
💡 메서드에도 static 키워드로 스태틱메서드를 만들 수 있습니다.
길이 너무 길어질까 봐 이만 줄입니다.
다음 포스팅들에서 클래스의 상속, 인터페이스에 관한 내용을 다루겠습니다.