flutter dart의 @override는 대체 뭘까?

majinbuu·2023년 7월 10일
0

무념 무상으로 코드를 따라 적다보니 자꾸 눈에 거슬리는 것이 있으니 그것은 바로

@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();
}

output

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

profile
일상을 편하게 만들어 주는 개발자

0개의 댓글