abstract 클래스를 상속함에 따른 오버라이딩
abstract class Human{
void walk();
}
enum Team{red, blue}
enum XPLevel{beginner, medium, pro}
class Player extends Human{
String? name;
XPLevel xp;
Team team;
Player({required this.name, required this.xp, required this.team});
// override 안붙여도 차이 없으나 컴파일러가 에러 발생시켜 실수 방지 및 가독성 목적(부모로부터 재정의 된 것을 명확히함)
@override
void walk(){
print("Im walking");
return;
}
void display(){
print("Hi My name is $name");
}
}
class Coach extends Human{
@override
void walk()
{
print("Coach is walkging");
return;
}
}
void main(){
var nico = Player(name: "nico", xp: XPLevel.beginner, team: Team.red)
..name = "las"
..xp =XPLevel.medium
..team = Team.blue
..display();
var potato = nico
..name="zzz"
..xp=XPLevel.pro
..team=Team.red
..display()
..walk();
var coach = Coach();
coach.walk();
}
클래스 상속에 따른, 오버라이딩
class Human{
final String name;
Human({required this.name});
void display(){
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); // super 키워드로 부모클래스와 상호작용 가능
@override
void display(){
super.display();
print("and I play for ${team.name}");
}
}
void main(){
var player = Player(team:Team.blue, name:"nico");
player.display();
}
'DART&Flutter' 카테고리의 다른 글
| Dart) mixin (0) | 2026.05.19 |
|---|---|
| Dart) Cascade operator (0) | 2026.05.19 |
| Dart) 이름있는 생성자(Named Constructors) (0) | 2026.05.19 |
| Dart) 클래스 생성자 및 Named Parameters (0) | 2026.05.18 |
| Dart) final vs const (2) | 2026.05.15 |
