무념 무상으로 코드를 따라 적다보니 자꾸 눈에 거슬리는 것이 있으니 그것은 바로
@override
이게 대체 뭐길래 코드줄에 있는 것일까 궁금해졌다.
검색해보니 stackoverflow에 나와 비슷한 궁금증을 가진 친구가 있었다(고맙다)
결론부터 말하자면(결론이라고 말했지만 내가 제대로 이해했는지 확신은 없음) @override는 주석이다. 없어도 코드는 작동한다.
이 주석의 의미는 @overide 다음에 나오는 함수? 메쏘드?(초보라 두개 구분 못함)가 부모보다 우세 하다는 의미이다.
설명하기가 너무 어려운데 이 예제를 보면 느낌이 퐉! 온다
class A {
void foo() {
print("Class A");
}
}
class B extends A {}
class C extends A {
@override foo() {
print("Class C");
}
}
void main() {
A a = A();
B b = B();
C c = C();
a.foo();
b.foo();
c.foo();
}
Class A
Class A
Class C
class C가 class A를 상속 받았음에도 foo()의 실행 결과로는 "Class C"가 출력됐다.
A를 상속 받았지만 C 클래스 내에서 foo()를 수정했기 때문이다.
이렇게 부모한테도 foo()가 있지만 자식이 foo()를 재정의 해주면,
부모에 있는 foo()보다 요놈이 우선시 된다는 의미로 @override 주석을 달아주는 것이다.
대충 이런 의미라고 생각하고 넘어가는게 심신에 좋을 것 같다
출처: https://stackoverflow.com/questions/51224205/what-is-the-purpose-of-override-used-in-flutter