Dart에서 static 변수를 선언하거나 메소드를 선언하는 방법을 소개합니다.
1. Static 변수
클래스 안에 Static으로 변수를 선언하면, 클래스 객체를 생성하지 않아도 변수에 접근할 수 있습니다. 또한, 클래스의 static 변수를 다른 객체나 외부와 공유할 수 있습니다.
Syntax
아래와 같이 static 변수를 정의할 수 있습니다.
- 외부에서
ClassName.staticVariable
로 접근하여 값을 읽거나 변경할 수 있음
class ClassName {
static int staticVariable = 0;
}
Example
아래와 같이 static 변수를 사용할 수 있습니다.
Person.counter
는 static 변수이며, 서로 다른 클래스 객체에서 이 변수를 공유합니다.
- p1과 p2 객체를 생성하면 공유하고 있는 static 변수
counter
가 2로 증가됨 Person.counter
으로 외부에서 값을 읽을 수 있음Person.counter = 10
처럼 외부에서 접근하여 값을 변경할 수 있음
class Person {
String name;
Person(String n) : name = n {
counter = counter + 1;
}
static int counter = 0;
}
void main() {
Person p1 = Person("Alex");
Person p2 = Person("Alex");
print("Person.counter = ${Person.counter}");
Person.counter = 10;
print("Person.counter = ${Person.counter}");
}
Output:
Person.counter = 2
Person.counter = 10
2. Static 메소드
Static 메소드는 클래스의 객체 생성 없이 사용할 수 있는 메소드입니다.
Syntax
Static 메소드는 클래스 안에서 아래와 같이 선언할 수 있습니다.
- Static 메소드 안에서 멤버 변수를 사용할 수 없고, Static 변수나 인자만 접근할 수 있음
- Static 메소드에서 다른 Static 메소드를 호출할 수 있음, 멤버 메소드는 호출 안됨
ClassName.methodName()
으로 객체 생성 없이 Static 메소드를 호출할 수 있음
class ClassName{
static returnType methodName() {
// statements
}
}
Example
다음과 같이 Static 메소드를 선언하고 호출할 수 있습니다.
- Static 메소드에서 멤버 변수 접근 시 컴파일 에러 발생
- Static 변수는 사용 가능
class Person {
String name;
Person(String n) : name = n {
counter = counter + 1;
}
static int counter = 0;
static String getNameAndCounter(String yourName) {
return "name: ${yourName}, counter: ${counter}";
}
}
void main() {
print("getNameAndCounter() = ${Person.getNameAndCounter("Alex")}");
Person.counter = 10;
print("getNameAndCounter() = ${Person.getNameAndCounter("John")}");
}
Output:
getNameAndCounter() = name: Alex, counter: 0
getNameAndCounter() = name: John, counter: 10
Loading script...
Related Posts
- Flutter/Dart - Future.delayed() 사용 방법
- Flutter/Dart - Stream 사용 방법
- Flutter/Dart - 파일, 디렉토리 삭제
- Flutter/Dart - 텍스트 파일 쓰기
- Flutter/Dart - 반복문 (for, while, for-in, forEach)
- Flutter/Dart - Static 변수, 메소드 선언
- Flutter/Dart - 텍스트 파일 읽기
- Flutter/Dart - 다양한 Null 체크 방법
- Flutter/Dart - Double을 Int로 변환
- Flutter/Dart - Double을 String으로 변환
- Flutter/Dart - String을 Double로 변환
- Flutter/Dart - String을 List로 변환
- Flutter/Dart - String에서 특정 문자열 Index 찾기
- Flutter/Dart - String 길이(length)
- Flutter/Dart - 몇 초 지연시키기, sleep
- Flutter/Dart - 날짜 계산, 년/월/일 더하고 빼기
- Flutter/Dart - 날짜 문자열을 DateTime으로 변환
- Flutter/Dart - 현재 시간 가져오기, DateTime
- Flutter/Dart - Map에 key-value 추가
- Flutter/Dart - Map 순회 방법
- Flutter/Dart - Map 선언 및 초기화
- Flutter/Dart - Map에서 Entry(key-value) 제거
- Flutter/Dart - key, value로 Map 정렬
- Flutter/Dart - 리스트 복사 방법
- Flutter/Dart - 리스트 합치는 방법
- Flutter/Dart - 리스트 최대값, 최소값 찾기
- Flutter/Dart - 리스트 요소 추가, 특정 위치 추가
- Flutter/Dart - 리스트 요소 제거
- Flutter/Dart - 리스트 합계, 평균 계산
- Flutter/Dart - 리스트 요소 값 변경, 찾기
- Flutter/Dart - 리스트 중복 제거
- Flutter/Dart - 리스트 정렬 (오름차순, 내림차순)
- Flutter/Dart - 리스트 자르기, 분리하기
- Flutter/Dart - 변수 타입 체크
- Flutter/Dart - 리스트 필터링