-
[Dart] extends와 implements의 차이??Flutter 2023. 11. 2. 14:44
공통점
둘 다 class가 다른 class를 상속받을 때 사용한다.
class A extends B{} class C implements D{}
차이점
Java 에서는 extends는 class가 class를 상속받을 때, implements는 interface를 상속받을 때 사용했는데 Dart에서는 조금 달라 정리해본다.
Dart에서는 interface라는 키워드가 대신
이를 상속 받을때 extends로 하냐, implements로 하냐에 따라
부모 class 내의 method 내용을 채워야 하느냐 마느냐(재정의)에 차이를 둔다.
Java에선 implements로 상속받으면 부모 interface의 method 안의 내용이 없기 때문에 자식 class에선 method안에 내용을 채워야 했다.
Dart에선 implements로 상속받으면 부모 class의 method 안에 내용이 있어도 재정의 해야한다.
class Person{ void walk(){ print('walk'); } } class Man implements Person{ // 꼭 구현해야 함. @override void walk(){ print('run'); }; } class Woman extends Person{ // 써도되고 안써도 되고 재정의해서 써도되고 // 마음대로 오버라이딩 가능 }
extends 자식 class가 부모 class의 method를 그대로 사용 가능 implements 자식 class가 부모 class의 method를 재정의 하여 사용해야 함(부모 class는 거의abstarct) Interface
Dart 3.0에서부턴 Interface 키워드를 사용할 수 있게 되었다.
하지만 Java 랑은 다르게 객체 생성이 가능하다...
따라서 Java의 interface 처럼 사용하고 싶으면
abstract interface A{}
와 같이 선언해주면 되겠다.
'Flutter' 카테고리의 다른 글
[Flutter] Don't invoke 'print' in production code. 뜨는 이유 (0) 2023.12.18 [Flutter] TextFormField 함수 정리 (0) 2023.11.14 [Dart] Dart에서의 static, const와의 차이점? (0) 2023.11.01 [Dart] "toString"과 "as String" 차이? (0) 2023.10.31 [Flutter] FocusNode 활용 (0) 2023.10.30