본문 바로가기



Dart 18. 상속과 추상 클래스 {유목민 알폰스}



dart에서 클래스의 상속에 대해서 정리해 보겠습니다.

1. 상속

  • SubClass는 ParentClass의 자원을 상속받았기 때문에 body부분에 코드가 기술되지 않았지만 부모코드에서 기술된 자원을 사용할 수 있습니다. 
class ParentClass {
  int val = 10;

  void fun() {
    print("Parent..fun()...");
  }
}

class SubClass extends ParentClass {}

main() {
  var obj = SubClass();
  obj.fun();
  print("obj.val : ${obj.val}");
}

결과)
Parent..fun()...
obj.val : 10

 

2. 오버라이딩

  • 부모클래스의 속성을 그대로 사용할수도 있지만 상속을 받은 다음에 변경하고 싶은 부분은 새롭게 정의해서 사용할 수도 있습니다. 이것을 오버라이딩이라고 합니다.
class ParentClass {
  int val = 10;

  void fun() {
    print("Parent..fun()...");
  }
}

class SubClass extends ParentClass {
  int val = 100;

  void fun(){
    print('Sub..재정의된 fun...');
  }
}

main() {
  var obj = SubClass();
  obj.fun();
  print("obj.val : ${obj.val}");
}

결과)
Sub..재정의된 fun...
obj.val : 100

 

  • 자식클래스에서 부모클래스의 멤버에 접근하기
class ParentClass {
  int val = 10;

  void fun() {
    print("Parent..fun()...");
  }
}

class SubClass extends ParentClass {
  int val = 100;

  void fun() {
    super.fun(); //부모클래스를 super로 접근
    print('Sub..재정의된 fun...');
  }
}

main() {
  var obj = SubClass();
  obj.fun();
}

출력)
Parent..fun()...
Sub..재정의된 fun...

 

부모클래스의 생성자 호출

class ParentClass {
  int val = 10;

  void fun() {
    print("Parent..fun()...");
  }
}

class SubClass extends ParentClass {
  int val = 100;

  void fun() {
    super.fun(); //부모클래스를 super로 접근
    print('Sub..재정의된 fun...');
  }
}

main() {
  var obj = SubClass();
  obj.fun();
}

출력)
Parent..fun()...
Sub..재정의된 fun...
class ParentClass {
  int cd = 1;
  String id = "m001";
  ParentClass(this.cd, this.id) {} //값을 받으면서 바로초기화
}

class SubClass extends ParentClass {
  //부모클래스 cd, id값입력이 필수이기 때문에 상속을 받았으면 사양을 맞춰줘야 한다.
  SubClass(int prm_cd, String prm_id) : super(prm_cd, prm_id) {}
}

main() {
  var obj = SubClass(1, 'kkang');
  print('${obj.cd} ${obj.id}');
}

출력)
1 kkang

=================================================

class ParentClass {
  int cd = 1;
  String id = "m001";
  ParentClass(this.cd, this.id) {} //값을 받으면서 바로초기화
}

class SubClass extends ParentClass {
  //부모클래스 cd, id값입력이 필수이기 때문에 상속을 받았으면 사양을 맞춰줘야 한다.
  SubClass(super.cd, super.id);
}

main() {
  var obj = SubClass(1, 'kkang');
  print('${obj.cd} ${obj.id}');
}

출력)
1 kkang

 

 

By. 유목민 알폰스 - Nomadic Alphonse

 

[ 이전글 ]