* 믹스인 :
특정 클래스에 원하는 기능들만 골라넣을 수 있는 기능
특정 클래스를 지정 - 속성 정의 가능,
지정한 클래스를 상속하는 클래스에서도 사용 가능
한 개의 클래스에 여러 개의 믹스인 적용 가능
mixin IdolSingMixin on Idol{
void sing(){
print('${this.name}이 노래를 부릅니다.');
}
}
// 믹스인을 적용할 때는 with 키워드 사용한다.
class BoyGroup extends Idol with IdolSingMixin{
BoyGroup(
super.name,
super.membersCount,
);
void sayMale(){
print('저는 남자 아이돌입니다.');
}
}
void main(){
BoyGroup bts = BoyGroup('BTS', 7);
// 믹스인에 정의된 sing() 함수 사용 가능
bts.sing();
}
// 결과 : BTS이 노래를 부릅니다.
* 추상
: 상속이나 인터페이스로 사용하는데 필요한 속성만 정의하고, 인스턴스화 할 수 없도록 하는 기능
인스턴스화가 필요없는 공통 부모 클래스 만들 때 사용한다!
abstract 키워드 사용해서 추상 클래스 지정한다. (선언까지만 해주면 됨)
* 추상 클래스 - 추상 메서드 선언 가능
* 추상 메서드 - 함수의 반환 타입, 이름, 매개변수만 정의 / 함수 바디 선언을 자식 클래스에서 필수로 정의하도록 강제
// 추상 클래스
abstract class Idol{
final String name;
final int membersCount;
Idol(this.name, this.membersCount);
void sayName(); // 추상 메서드 선언 (동작 선언 X)
void sayMembersCount();
}
// 'implements' 추상 클래스를 구현하는 클래스
class GirlGroup implements Idol{
final String name;
final int membersCount;
GirlGroup(
this.name,
this.membersCount,
);
// 추상 메서드 정의해줌 (필수)
void sayName(){
print('저는 ${this.name}입니다.');
}
void sayMembersCount(){
print('${this.name} 멤버는 ${this.membersCount}명 입니다.');
}
}
'Flutter' 카테고리의 다른 글
[Flutter] 위젯(Widget) 소개 (0) | 2023.06.08 |
---|---|
[Flutter] 플러터 객체지향 프로그래밍 - (4) 제네릭과 static, 캐스케이드 연산자 (1) | 2023.06.08 |
[Flutter] 플러터 객체지향 프로그래밍 - (2) 상속 및 오버라이드, 인터페이스 (0) | 2023.06.08 |
[Flutter] 플러터 객체지향 프로그래밍 - (1) 클래스 (0) | 2023.06.07 |
[Flutter] 플러터의 스키아(Skia) 엔진 및 구조 (0) | 2023.06.02 |
댓글