함수내에서 인스턴스 생성전 사용하기위해선 static 메소드를 부여해야된다고 이해하면 될까요?
346
작성한 질문수 91
parseItemCode() 메소드에 static 을 부여해야 사용시 에러가 발생하지 않는데,
제가 알기론 static 메소드는 Class에서 instance를 생성하지 않고 사용가능한 메소드를 생성하기 위해 사용하는 것으로 압니다.
함수내에서 인스턴스 생성전 사용하기위해선 static 메소드를 부여해야된다고 이해하면 될까요?
답변 1
0
안녕하세요.
인스턴스 생성전에 사용한다는 표현은 좀 많이 어색한 것 같습니다.
인스턴스에 귀속되는 함수가 아니라 클래스에 귀속되는 함수를 생성할때 static 키워드를 사용합니다.
이부분은 제 Dart OOP 강의를 추가 참고해주세요!
0
class DataUtils {
static getTimeFromDateTime({required DateTime dateTime}) {
return '${dateTime.year}-${dateTime.month}-${dateTime.day} ${getTimeFormatter(dateTime.hour)}:${getTimeFormatter(dateTime.minute)}';
}
static getTimeFormatter(int number) {
return number.toString().padLeft(2, '0');
}
}위의 코드에서 getTimeFromDateTime 함수가 내부에서 getTimeFormatter 함수를 호출하기 위해선 getTimeFormatter 함수에 static 을 부여해야하는데,
클래스 내부에서 클래스 내에 선언되어 있는 함수를 사용하기 위해선 static 메소드가 필요한 것 같은데, 왜 그렇게 되는 것인지 원리가 궁금합니다.
0
안녕하세요.
이 역시 올바르게 이해하는 어프로치는 아닙니다.
static 함수가 아닌 함수에서 static 함수를 실행할수도 있고 static이 아닌 함수도 실행할 수 있습니다.
static이 아닌 함수에서는 (인스턴스에 귀속된 함수) static 함수를 실행하는 것 처럼 인스턴스에 귀속되는 함수는 실행이 불가능합니다.
이 부분은 문법적으로 봐도 당연한 상황입니다. 예를들어서 getTimeFromDateTime() 함수가 static일 경우 DataUtils.getTimeFromDateTime()으로 실행 가능하나 static이 아닐경우 DataUtils().getTimeFromDateTime() 이런식으로 실행해야합니다. 이 부분은 OOP 강의에서도 설명 드렸듯이 문법적으로 규정 돼있는 부분입니다.
getTimeFromDateTime 함수에서 getTimeFormatter를 호출할때도 마찬가지입니다. getTimeFromDateTime이 static이고 getTimeFormatter가 마찬가지로 static일경우 DataUtils.getTimeFormatter()로 실행이 가능합니다.
하지만 static이 아닐경우 DataUtils().getTimeFormatter() 이렇게 실행해야겠죠. 인스턴스 귀속이니까요.
그러니 "클래스 내부에서 클래스 내에 선언되어 있는 함수를 사용하기 위해선 static 메소드가 필요한 것 같은데, 왜 그렇게 되는 것인지 원리가 궁금합니다." 이렇게 말씀하신건 사실이 아닙니다. static과 관계없이 함수를 실행하려면 static이든 아니든 어디서든 실행은 가능합니다. 인스턴스에 귀속되는지, 클래스에 귀속되는지의 차이입니다.
LocationPermission.denied관련 질문입니다
0
588
1
videocontrollor dispose
0
433
1
onlogotap함수의 video nullable관련질문
0
392
1
setState 사용 차이
1
448
1
블로그 웹앱 배포 방법
0
509
1
sizedbox 위젯에 primary = RED_COLOR
1
434
1
개념 강의 순서 질문
0
409
1
materialstateProperty 다른 메소드관련질문
0
418
1
내 노트 모아보기
0
502
1
SafeArea (iPhone, Android)
0
408
1
web view 실행 안됩니다.
0
409
1
랜덤 숫자 생성기 프로젝트 관련
0
539
2
안도르이드 애뮬레이터 질문
0
384
1
super를 사용하는 건, 부모와 자식 클래스의 파라미터 이름이 꼭 같아야하나요?
0
476
1
선생님 flutter device를 크롬으로 했을때 http 통신이 안됩니다..
0
784
1
no element
0
442
1
암호화
0
236
1
책과 강의
0
388
1
voidcallback함수와 클래스내에 변수선언에 관한질문
0
476
1
android studio 세팅
0
482
1
오늘도 출근 세팅하기
2
563
1
재사용 클래스 임폴트 방법
0
485
1
가상화를 못하는 CPU인건가요? 확인 부탁드립니다.
0
401
1
flutter dispose 관련
0
1392
2





