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

+ Recent posts