Flutter/Dart 문법

[Dart] 오버라이딩

Chafle 2023. 3. 22. 15:03
반응형

메서드는 클래스 내부에 있는 함수

 

오버라이드: 덮어서 쓴다(우선 시 하다)

 

상속한 경우에만 오버라이드를 사용한다.

 

void main() {
  TimesTwo tt = TimesTwo(2);
  print(tt.calculate());
}

class TimesTwo {
  final int number;

  TimesTwo(
    this.number,
  );

  int calculate() {   // 이 메서드를 오버라이드
    return number * 2;
  }
}

 

위와 같이 number를 받아서 *2를 하는 메서드를 작성했고

 

오버라이드 하여 *4의 메서드를 상속받은 자식클래스에서 사용하고 싶다고 한다면

 

class TimesFour extends TimesTwo {
  TimesFour(
    int number,
  ) : super(number);
  
  @override
  int calculate() {
    return super.number * 4;
  }
}

 

@override를 통하여 메서드를 재정의 할 수 있다.

 

super(부모)의 caclulate메서드를 사용하여 
  @override
  int calculate() {
    return super.calculate() * 2 ;
  }

이렇게도 오버라이드 할 수 있다.

 

 

 

void main() {
  TimesTwo tt = TimesTwo(2);
  print(tt.calculate());
  
  TimesFour tf = TimesFour(2);
  
  print(tf.calculate());
}

class TimesTwo {
  final int number;

  TimesTwo(
    this.number,
  );

  int calculate() {
    // 이 메서드를 오버라이드
    return number * 2;
  }
}

class TimesFour extends TimesTwo {
  TimesFour(
    int number,
  ) : super(number);
  
  @override
  int calculate() {
    return super.calculate() * 2 ;
  }
}
반응형