Dart Class에 대하여

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 키워드로 스태틱메서드를 만들 수 있습니다.

길이 너무 길어질까 봐 이만 줄입니다.

다음 포스팅들에서 클래스의 상속, 인터페이스에 관한 내용을 다루겠습니다.