**이 페이지에서 알 수 있는 내용

- Inheritance
- super keyword**

Inheritance

super 키워드는 상속받은 부모 클래스에 접근하게 하거나 메소드를 호출할 수 있게 해줍니다. 즉 예제 처럼 super에 name을 전달해주면 클래스를 전달한 name과 함께 호출하게 됩니다.

자식 클래스에서 상속 받은 부모 클래스의 변수를 포함해서 생성자를 만들 때, 예제 처럼 작성합니다.

예제

// Inheritance
class Human {
  final String name;
  Human({required this.name}); // named argument로 만들었을때
  // Human(this.name);
  sayHello() {
    print("Hi my name is $name");
  }
}

enum Team { red, blue } // Team은 red or blue

class Player extends Human {
  final Team team; // 아무도 변경할 수 없도록 final로 상수처리 했습니다.

  //부모 클래스의 변수가 포함된 생성자
  Player({required this.team, required String name,})
      : super(name: name); // Player 생성자 함수에 있는 name을 부모 클래스 Human으로 
													 // 전달하기 위해 super 키워드를 사용했습니다.
													 // named argument로 만들때 super키워드 안에 name : name으로 작성하지만
													 // named argument 없이 코드를 작성하고 싶으면 아래처럼 작성하면 됩니다.
													 // : super(name);

  // 부모 클래스에 있는 SayHello 함수를 커스텀하고 싶다면 아래와 같이 작성하면 됩니다.
  @override
  sayHello() {
    super.sayHello(); // 부모 클래스와 상호작용을 위해 super 사용
    print('and I play for $team');
  }
}

void main() {
  var player = Player(team: Team.red, name: 'Ordem');
  print(player);
  player.sayHello();
}