Class 선언
void main(){
Idol bts = Idol("방탄소년단", ["지수", "제이홉"]);
bts.name = "에이핑크";
}
class Idol {
final String name;
final List<String> members;
Idol(this.name, this.members);
}
- immutable 하게 하기위해 final로 선언
- const constructor를 사용하면 값이 같은 인스턴스는 같은 인스턴스가 된다.
- 단 빌드 당시 타입을 알 수 있어야함.
- DateTime.now() 같은 상황은 불가능
- _classname: 프라이빗 클래스 다른 파일에서 import 해도 사용할 수 없음
Class 상속
class Idol {
String name;
int membersCount;
Idol({
required this.name,
required this.membersCount,
});
void sayName() {
print('저는 ${this.name}');
}
void sayMembersCount() {
print("${this.name} 은 ${this.membersCount} 명의 멤버가 있습니다.");
}
}
class BoyGroup extends Idol {
BoyGroup(
String name,
int membersCount,
) : super(
name: name,
membersCount: membersCount,
);
}
- 상속 - inheritance - super
- 상속은 부모클래스에서 자식으로만 넘겨줌
Override
class TimesTwo {
final int number;
TimesTwo(this.number);
int calculate() {
return number * 2;
}
}
class TimesFour extends TimesTwo {
TimesFour(
int number,
) : super(number);
@override
int calculate() {
return super.calculate() * 2;
}
- super를 사용해서 부모요소의 메서드를 가지고 override 할 수 있음
Static
- static은 instance에 귀속되지 않고 class에 귀속된다.
- 인스턴스를 만들지 않아도 class를 이용해서 사용할 수 있음
interface
- interface =>
class BoyGroup implements IdolInterface{}
- 인터페이스 선언 앞에 abstract를 붙이면 인터페이스 자체를 인스턴스로 사용할 수 없음
OOP (Object Oriented Programming)
- 모든 class의 최상위 부모는 Object
- 따라서 객체지향프로그래밍