본문 바로가기
개발해보겡/Flutter

Dart Inheritance & override 이해하기

by 취미야취미 2023. 1. 6.
728x90
반응형

Dart의 상속에 대해서 이해해보겠습니다.

먼저 Human Class를 생성합니다.

Human 클래스는 이름과 나이를 나타내는 멤버 변수로 가지고 있습니다.

class Human {
  String name;
  int age;

  Human({
    required this.name,
    required this.age,
  });

  void intro() {
    print("My name is $name and I'm $age years old.");
  }
}

다음은 Human 클래스를 상속받은 Student 클래스를 생성합니다.

Student 클래스는 학생ID를 나타내는 number 라는 멤버 변수를 하나 더 가지고 있습니다.

class Student extends Human {
  final int number;

  Student({
    required String name,
    required int age,
    required this.number,
  }) : super(name: name, age: age); // 부모 클래스 생성자 호출

}

void main() {
  var student = Student(
    name: 'name',
    age: 19,
    number: 2020031432,
  );
}

이제 Human 클래스의 intro() 메서드를 수정해서

Student 클래스가 제대로 생성되었는지 확인하고 싶습니다.

이제 부모 클래스의 메서드를 override합니다.

class Human {
  String name;
  int age;

  Human({
    required this.name,
    required this.age,
  });

  void intro() {
    print("My name is $name and I'm $age years old.");
  }
}

class Student extends Human {
  final int number;

  Student({
    required String name,
    required int age,
    required this.number,
  }) : super(name: name, age: age);

  // 부모 클래스 메서드 수정 
  @override
  void intro() {
  	// Human 클래스 intro()
    super.intro();
    print("My Student-ID is $number");
  }
}

void main() {
  var student = Student(
    name: 'name',
    age: 19,
    number: 2020031432,
  );
  student.intro();
}

위의 코드를 실행하면

Student 클래스가 제대로 생성되어 intro() 메서드를 호출하는 것을 확인할 수 있습니다.

감사합니다.

반응형