A class that can be extended[inherited], implemented but cannot be constructed[instantiated].
Dart Official Doc :
"Abstract classes cannot be constructed from any library, whether its own or an outside library. Abstract classes often have abstract methods."
여기서 "outside library"는 다른 파일을 이야기한다. 예를 들면 class_a.dart 와 class_b.dart 가 있고 class_b.dart에서 import class_a.dart 이런 상황을 이야기 하는 거다.
interface - A class that can be constructed[instantiated], implemented but cannot be extended[inherited].
// Dart Official Doc :
"An interface can be implemented by any class...
글쓴이가 찾아보고 개인적으로 생각하는 정보 (그냥 개인 사견):
dart의 interface는 state를 가지는 게 가능하다. 정말 정말 가능하다. 다른 언어와는 다르다. 이건 아마 다음과 같을 것이다.(regardless Dart's interface is different from other languages that it can have states)
=> 예상 이유 : 다른 언어는 interface 타입이 따로 있는데 dart는 class modifier 로 하니까 사실은 class인 거다. 그래서 되는 것 같다.
(because it is not actually a interface type but the class that acts as an interface.)
// Construct : new instances of a class.
// Extend : a class to create a new subtype.
// Implement : a class or mixin's interface.
// Mixin : a mixin or mixin class.
// Other Library : other files ex) a.dart imports b.dart
A class that can be only implemented but cannot be extended[inherited] or constructed[instantiated].
Dart Official Doc :
"Like an interface class, other libraries can implement, but can't inherit, a pure interface.Like an abstract class, a pure interface can have abstract members.(also non-abstracted implemented one)
ref - https://dart.dev/language/class-modifiers
ref - https://stackoverflow.com/questions/78092938/dart-interface-can-be-extended