this

하요·2024년 7월 2일
0
post-thumbnail

Dart에서 현재 객체 참조하기: this

Dart에서 this 키워드는 현재 객체를 참조하는 데 사용됩니다. 이는 클래스의 인스턴스 메서드와 생성자 내부에서 현재 객체의 속성과 메서드에 접근하기 위해 주로 사용됩니다.

주요 개념

  • 현재 객체: 클래스의 인스턴스(객체)를 의미합니다. 메서드나 생성자가 호출될 때, 해당 메서드나 생성자가 속한 객체를 가리킵니다.

주요 사용 사례

  • 인스턴스 변수와 매개변수 구분: 생성자나 메서드 내부에서 인스턴스 변수와 동일한 이름의 매개변수가 있을 때 this를 사용하여 인스턴스 변수를 참조할 수 있습니다.
  • 현재 객체의 메서드 호출: 현재 객체의 다른 메서드를 호출할 때 사용합니다.

주요 활용도

  • 객체 초기화: 생성자 내에서 this를 사용하여 인스턴스 변수를 초기화합니다.
  • 메서드 체이닝: 메서드에서 this를 반환하여 연속적으로 메서드를 호출할 수 있게 합니다.
  • 객체의 속성과 메서드에 접근: 클래스의 인스턴스 변수와 메서드에 접근할 때 사용합니다.

코드 예제

인스턴스 변수 초기화

class Person {
  String name;
  int age;

  // 생성자
  Person(String name, int age) {
    this.name = name; // 현재 객체의 인스턴스 변수 접근
    this.age = age;   // 현재 객체의 인스턴스 변수 접근
  }

  void printInfo() {
    print('Name: ${this.name}, Age: ${this.age}'); // 현재 객체의 인스턴스 변수 접근
  }
}

void main() {
  Person person = Person('Alice', 30); // 새로운 Person 객체 생성
  person.printInfo(); // Name: Alice, Age: 30
}

메서드 체이닝

class Counter {
  int value = 0;

  Counter increment() {
    this.value += 1;
    return this; // 현재 객체를 반환하여 메서드 체이닝 가능
  }

  void printValue() {
    print('Value: $value');
  }
}

void main() {
  Counter counter = Counter();
  counter.increment().increment().increment().printValue(); // Value: 3
}

추가 팁

  • 정적 메서드에서 this 사용 불가: 정적 메서드는 클래스 자체에서 호출되므로 this를 사용할 수 없습니다. 정적 메서드 내에서는 인스턴스 변수를 직접 참조할 수 없기 때문에 this를 사용할 수 없습니다.
  • 상속 관계에서 this: 하위 클래스에서 this를 사용하면 여전히 현재 객체를 참조합니다. 상위 클래스의 메서드를 호출할 때는 super 키워드를 사용합니다.

관련 자료

profile
flutter 개발자(진)

0개의 댓글