카테고리 없음

flutter @override

햎피 2022. 6. 27. 22:59
반응형

flutter나 java 등 여러 프로그래밍 언어를 사용하다보면 @override라는 것을 자주 보게된다.

그렇다면 @override가 무엇인지에 대해서 알아보겠다.

 

@override는 함수가 조상 클래스에도 정의되어있지만 현재 클래스에서 다른 작업을 수행할 수 있도록 재정의하는 것이다.

추상 메소드 구현에도 사용한다.

사용을 할지 말지는 선택사항이지만, 가독성을 높이기 위해서는 사용하는 것이 좋다고 한다.

 

The annotation @override marks an instance member as overriding a superclass member with the same name.

이라고 dart SDK 도큐먼트에서 말하고 있다!

 

*@override는 키워드가 아니라 annotation이라고한다.

 

예를들어 설명하겠다.

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

이렇게 나온다.

B extends A를 했을 때는 A의 모든 메소드를 상속받는다.

따라서 b.foo()를 하면 부모클래슨인 A의 메소드를 부른다.

 

하지만 C의 경우 foo 함수를 가지고 있고, override 키워드는 부모클래스에서의 foo를 override(재정의) 하기 때문에 Class C로 자신의 클래스에서 정의된 메소드에 대한 결과값이 나온다!

 

 

반응형