일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- tutorial
- 콩세알프로젝트
- Unit
- tutorials
- 1주차
- 티스토리챌린지
- watchkit
- SwiftData
- ios
- 2주차
- Apple
- 2023
- test
- xcode15
- Flutter
- WWDC
- @Model
- swiftUI
- unittest
- ActivityKit
- 오블완
- Swift
- watchapp
- 회고
- 프로그래머스
- 3주차
- 개발자
- 대학생협
- RxSwift
- KoreaMango
- Today
- Total
KoreaMango 나무
Flutter - Class의 확장 방법 본문
Flutter를 개발할 때는 Dart를 사용합니다.
iOS 개발을 오래 했던 저는 Swift가 익숙합니다.
이번에는 Dart와 Swift를 비교하면서 Class의 확장 방법들을 한번 알아보도록 할게요.
Dart에 Class 확장하는 방법 중 abstract, extends, Implements, with 에 대해 알아보도록 하겠습니다.
abstract
abstract는 Swift의 Protocol 과 비슷한 것 같습니다.
인터페이스를 잡아주고, 구체적인 구현은 하지 않는 모습이 비슷하다고 생각했습니다.
Dart
abstract class Vehicle {
void moveForward(int meters);
}
Swift
protocol Vehicle {
func moveForward(meters: Int)
}
https://dart.dev/language/class-modifiers
를 보면 interface가 있는데, 무엇이 다른지는 다음에 한번 알아보도록 하겠습니다 :)
(dart 3.5에 나온건가?)
extends
extends 는 상위 클래스를 상속합니다.
Swift에서는 상속할 때 딱히 키워드가 필요 없이, 타입처럼 사용한다고 느꼈었는데요.
이러한 점이 차이가 있는 것 같습니다.
Dart
class Television {
void turnOn() {
_illuminateDisplay();
_activateIrSensor();
}
// ···
}
class SmartTelevision extends Television {
void turnOn() {
super.turnOn();
_bootNetworkInterface();
_initializeMemory();
_upgradeApps();
}
// ···
}
Swift
class Television {
func turnOn() {
illuminateDisplay()
activateIrSensor()
}
private func illuminateDisplay() {
print("Display illuminated")
}
private func activateIrSensor() {
print("IR sensor activated")
}
// ···
}
class SmartTelevision: Television {
override func turnOn() {
super.turnOn()
bootNetworkInterface()
initializeMemory()
upgradeApps()
}
// ···
}
https://dart.dev/language/extend
implements
implements는 특정 클래스나 인터페이스의 메서드와 속성을 강제로 재정의 하도록 합니다.
그런데 이러면 extends랑 뭐가 다른가? 라고 생각하실 수 있는데요.
extends는 상속, implements는 인터페이스 라고 생각하시면 될 것 같아요.
추가적으로 extends는 다중 상속이 안되는데 implements는 다중 인터페이스가 됩니다.
abstract 보다 implements를 사용하는 방식이 더 protocol에 가깝다는 생각도 듭니다.
요약하자면
추상 클래스, 상속을 할 때는 공통된 동작을 구현할 때 사용하는게 좋습니다.
인터페이스는 다양한 동작을 정의하고, 다중 구현을 허용할 때 좋습니다.
'Flutter' 카테고리의 다른 글
Flutter - 플러터의 메모리 관리 (1) | 2024.11.12 |
---|---|
Flutter - secure_storage || KeyChain 사용법 (feat. Method Channel) (0) | 2024.11.10 |
Flutter State Management - 1. Provider, ChangeNotifier 에 대해 (0) | 2024.11.09 |
Flutter - Build Context란? (1) | 2024.11.08 |