상속(Inheritance)이란?
다트(Dart)에서 상속이란 한 클래스의 특성을 다른 클래스가 물려받는 것을 말합니다. 이를 통해 코드의 재사용성을 높이고 효율적인 코딩을 가능하게 합니다. 상속하는 클래스를 ‘슈퍼 클래스’ or ‘부모 클래스’라고 하고 받는 클래스를 ‘서브 클래스’ or ‘자식 클래스’라고 합니다.
class Parent {
void message() {
print("This message is from parent class.");
}
}
class Child extends Parent {}
void main() {
new Child().message();
}
위의 코드에서 Child 클래스는 Parent 클래스에서 정의된 message() 메서드를 상속받아 사용했습니다.
오버라이딩(Overriding)이란?
오버라이딩(Overriding)는 자식 클래스가 부모 클래스의 메소드를 자신의 클래스에 맞게 재정의하는 과정을 말합니다. 상속받은 메서드 그대로 사용하는 대신, 자식 클래스에서 동일한 이름의 메서드를 정의함으로써 부모 클래스의 메서드를 대체할 수 있습니다.
class Parent {
void message() {
print("This message is from parent class.");
}
}
class Child extends Parent {
@override
void message() {
print("This message is from child class.");
}
}
void main() {
new Child().message();
}
위의 코드에서 Child 클래스는 Parent 클래스의 message() 메서드를 오버라이드하였습니다. 따라서 message() 함수를 호출하면 Child 클래스에서 오버라이드 된 메시지가 출력됩니다.
잠깐! @override 주석이 뭔가요?
@override 주석은 선택사항이지만, 프로그래머가 부모 클래스의 메서드를 오버라이드 하기로 의도한 경우 알려주는 역할을 합니다. 이 주석을 사용하면 코드를 읽는 사람에게 이 메서드가 오버라이드 된 메서드임을 명확히 알려줄 수 있습니다.
상속과 오버라이딩의 중요성
상속과 오버라이딩은 객체 지향 프로그래밍에서 중요한 개념입니다. 이를 통해 기존 코드의 재사용성을 높이고, 유지 관리를 쉽게 하며 코드의 구조를 더욱 명확하게 만들 수 있습니다. 이러한 기법을 잘 활용하면 간결하고 이해하기 쉬운 코드를 작성하는 데 큰 도움이 됩니다.