재미없지만 정리해두면 도움 되는 이론 시간~
1. 클래스
설계도, 데이터가 보유할 속성과 기능을 정의하는 자료구조.
cf)클래스를 이용해서 객체를 선언한 것이 클래스으 인스턴스
2. 메서드
클래스의 기능을 정의하는, 클래스에 종속된 함수.
3. 생성자
클래스의 인스턴스를 초기화하는 역할을 하는 메서드. 객체가 생성될 떄 초기화 될 때 호출됨.
4. 프라이빗 변수
다른 객체지향 언어에서는 클래스 내부에서만 접근가능한 변수를 의미하지만, Dart에서는 같은 파일에서만 접근 가능한 변수를 의미한다.
5. 상속
어떤 클래스의 기능을 다른 클래스가 쓸 수 있게 해주는 기능.
class 자식클래스 extends 부모클래스
6. 오버라이드
부모 클래스에 정의된 메서드를 재정의할 떄 사용. 오버라이드 명시 안해줘도 이름 같으면 오버라이드 되긴하지만, 명시해주자.
7. 인터페이스
상속과 비슷하지만 모든 기능을 무조건 재정의 해줘야 하는게 다름.
8. 믹스인
코드 재사용성을 높이기 위해 사용되는 특수한 클래스. 1)여러 클래스에 공통 기능을 추가해 코드 재사용성을 높이거나 2)다중상속 지원(dart는 기본적으로 다중상속 지원 X)
//예시//
mixin Swimming {
void swim() {
print("Swimming");
}
}
mixin Flying {
void fly() {
print("Flying");
}
}
class Animal {
void breathe() {
print("Breathing");
}
}
class Duck extends Animal with Swimming, Flying {}
void main() {
var duck = Duck();
duck.breathe(); // Animal 클래스의 메서드
duck.swim(); // Swimming 믹스인의 메서드
duck.fly(); // Flying 믹스인의 메서드
}
9. 추상
상속, 인터페이스로 사용하는데 필요한 속성만 정의하고 인스턴스화 할 수 없도록 하는 기능. 부모 클래스를 인스턴스화할 일이 없고 자식 클래스들에 필수적으로 또는 공통적으로 정의돼야 하는 메서드가 존재할 때 쓰면 좋음.
10. 제네릭
클래스나 함수의 정의를, 선언할 때가 아닌 인스턴스화하거나 실행할 때로 미룰 수 있게 해주는 기능.
//제네릭 클래스//
class Box<T> {
T value;
Box(this.value);
void setValue(T newValue) {
value = newValue;
}
T getValue() {
return value;
}
}
void main() {
// 정수형 Box 사용
var intBox = Box<int>(10);
print(intBox.getValue()); // 10
intBox.setValue(20);
print(intBox.getValue()); // 20
// 문자열형 Box 사용
var stringBox = Box<String>('Hello');
print(stringBox.getValue()); // Hello
stringBox.setValue('World');
print(stringBox.getValue()); // World
}
//제네릭 함수 //
dynamic myGenericFunction<T>(T value) {
if (value is int) {
return isEven(value);
} else if (value is String) {
return capitalize(value);
} else {
return value;
}
}
11. 스태틱
변수와 메서드는 보통 클래스의 인스턴스에 귀속되는데, static을 쓰면 클래스 자체에 귀속됨. 인스턴스끼리 공유하는 정보에 보통 지정함. (그래서 생성자에서 static 값을 지정하지 못함)
'Flutter' 카테고리의 다른 글
[Flutter] Shared preferences를 사용해서 좋아요 버튼 구현하기 (0) | 2025.01.24 |
---|---|
[Flutter] Firebase Firestore에서 데이터 가져오는 두 가지 방법 (0) | 2025.01.24 |
[Flutter] Stream Builder에서 TypeError (Null check operator used on a null value) 가 뜨는 경우 해결법 (0) | 2025.01.23 |
[Flutter] 안드로이드 에뮬레이터 app:compileDebugKotlin / org.jetbrains.kotlin.compilerRunner 오류 해결하기 (0) | 2025.01.23 |
[Flutter] Vibration 라이브러리로 진동효과 주기 (0) | 2025.01.22 |