반응형
class Human {
final String name;
Human({required this.name});
void sayHello() {
print('hi my name is $name');
}
}
enum Team { blue, red }
class Player extends Human {
final Team team;
Player({required this.team, required String name}) : super(name: name);
@override
void sayHello() {
super.sayHello();
print('And I play for ${team}');
//${team}과 $team의 차이는?
//Human.sayHello() - doesn't work
}
}
// 상속받은 이상 이미 name과 sayHello()함수는 존재한다.
// super은 조상 클래스에서 생성자를 가져오는 것(?)
void main() {
var player = Player(team: Team.blue, name: 'Ronaldo');
player.sayHello();
}
복습
enum Team { blue, green }
class Human {
String name;
Human(this.name);
// Human({required this.name});
void sayHello() {
print('hello my name is $name.');
}
}
class Player extends Human {
final Team team;
Player({required Team this.team, required String name}) : super(name);
// we also need to call the constructor of 'Human' class
// we need to set the name of 'Human'
@override
void sayHello() {
super.sayHello();
print('my team is $team, Thank you.');
}
}
void main() {
var player1 = Player(team: Team.green, name: 'Ronaldo');
//var human1 = Human('Ronaldo');
// var human1 = Human(name: 'Ronaldo');
//human1.sayHello();
}
즉 : super(name) 부분은 생성자를 만들 때 Human에서 상속받은 name 값을 Human 클래스의 생성자에서도 거쳐야 하기 때문에 전달하기 위해서 super(name)이라고 전해준다.
super는 조상 클래스를 말하는 것이니 Human(name) 한다고 생각하면 된다.
한 번 더 복습해보면 좋을 듯!
반응형
'DART' 카테고리의 다른 글
[노마드코더: Dart 시작하기] #4.10 Conclusions (0) | 2022.11.21 |
---|---|
[노마드코더: Dart 시작하기] #4.9 Mixins (0) | 2022.11.21 |
[노마드코더 : Dart 시작하기] #4.7 Abstract Classes (0) | 2022.11.21 |
[노마드코더 : Dart 시작하기] #4.6 Enums (0) | 2022.11.21 |
[노마드코더 : Dart 시작하기] #4.5 Cascade Notation (0) | 2022.11.21 |