**이 페이지에서 알 수 있는 내용
- Inheritance
- super keyword**
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();
}