내가 상속을 배웠던 언어는 get과 set을 분리해서 정의하는게 없었던 언어라 ( 내가 배우지 않은것일수도 있다 ) set만 오버라이드 할 경우 super를 호출되도 잘되는가에 대한 테스트가 필요했다.
테스트용이라 짧디 짧은 코드지만 그냥 날려버리기 뭔가 아깝다 생각이 들어 글을 남기기로 결정.
class A {
A() {
print('A가 생성이 시작되는 시점 - aValue: ${aValue}');
}
String aValue = 'default value';
}
class B extends A {
B() {
print('B가 생성이 시작되는 시점 - aValue: ${aValue}');
super.aValue = 'initValue';
}
@override
set aValue(String value) {
print('set:$value B에서의 오버라이드한 함수가 불려졌다.');
super.aValue = value;
}
}
void main() {
final b = B(); // 출력:A가 생성이 시작되는 시점 - aValue: default value, B가 생성이 시작되는 시점 - aValue: default value
print('시점 0 ~ b의 값 : ${b.aValue}'); // 출력: 시점 0 ~ b의 값 : initValue
b.aValue = 'main - value'; // 출력: set:main - value B에서의 오버라이드한 함수가 불려졌다.
print('시점 1 ~ b의 값 : ${b.aValue}'); // 출력: 시점 1 ~ b의 값 : main - value
}
set에서만 override를 해서 aValue를 설정할때 따로 print가 되도록 설정이 잘됐다.
super 지정이 잘 동작 한다.
뭐라 쓸 내용이 없네
반응형
'flutter' 카테고리의 다른 글
S-app 프로젝트 (0) | 2024.10.08 |
---|---|
Flutter 카카오 로그인 misconfigured, error_description: invalid android_key_hash or ios_bundle_id or web_site_url 에러 (0) | 2024.07.28 |
CocoaPods could not find compatible versions for pod "sqflite" - flutter ios 에러 (0) | 2024.02.04 |
Dart, Alpha2 국가코드 toMap (2) | 2023.11.27 |