Dart에서 클래스 기능 확장하기: extension
Dart에서 extension
키워드는 기존 클래스의 기능을 추가할 때 사용됩니다. 이를 통해 클래스의 소스 코드를 수정하지 않고도 새로운 메서드나 속성을 추가할 수 있습니다.
주요 개념
- 기능 추가: 기존 클래스에 새로운 메서드나 속성을 추가할 수 있습니다.
- 클래스 수정 불필요: 원본 클래스의 소스 코드를 수정하지 않고 기능을 확장할 수 있습니다.
- 유연한 확장: 클래스의 인스턴스를 확장하여 유연하게 새로운 기능을 제공합니다.
주요 사용 사례
- 기존 클래스 기능 확장: 클래스의 기본 기능을 확장하여 새로운 메서드나 속성을 추가할 때 사용합니다.
- 유틸리티 메서드 추가: 특정 클래스에 유용한 유틸리티 메서드를 추가하여 코드를 간결하게 만듭니다.
- 일관된 인터페이스 제공: 여러 클래스에 공통된 메서드를 추가하여 일관된 인터페이스를 제공합니다.
주요 활용도
- 클래스 확장: 기존 클래스에 새로운 기능을 추가하여 확장합니다.
- 코드 간소화: 자주 사용하는 기능을 클래스에 직접 추가하여 코드를 간소화합니다.
- 모듈화된 확장: 클래스를 모듈화하여 필요한 기능만을 선택적으로 추가할 수 있습니다.
코드 예제
extension
사용 예제
class Machine {}
void main() {
final machine = Machine();
}
extension
추가 예제
extension MyMachineExt on Machine {
void scanning() => print("scanning...");
void printing() => print("printing...");
}
class Machine {}
void main() {
final machine = Machine();
machine.printing();
machine.scanning();
}
MyMachineExt
확장을 통해 Machine
클래스에 scanning()
과 printing()
메서드를 추가했습니다.
- 확장 메서드는 클래스의 인스턴스를 통해 호출할 수 있습니다.
추가 팁
- 확장 클래스의 이름은 임의로 지정 가능: 확장 클래스의 이름은 마음대로 지을 수 있으며, 의미 있는 이름을 사용하는 것이 좋습니다.
- 확장 메서드는 클래스 인스턴스를 통해 호출: 확장된 메서드는 기존 클래스의 인스턴스를 통해 호출할 수 있습니다.
- 중복 메서드 주의: 확장에서 기존 클래스와 동일한 이름의 메서드를 정의하면, 확장의 메서드가 호출됩니다.
관련 자료