// 이곳에 쓴 내용은 앱 만들기라는 버킷리스트를 달성하기 위해 플러터를 공부하면서 정리하고 있는 내용입니다.
플러터에 대해 아는 것이 거의 없기 때문에 정리하면서 오류가 있을 수 있습니다.
오류를 발견하신 분은 댓글 남겨 주시면 감사하겠습니다.
오버라이드, 인터페이스, 믹스인
오버라이드: 부모 클래스 또는 인터페이스에 정의된 메서드를 재정의할 때 사용. 다트에서는 override 키워드 생략도 가능.
인터페이스: 공통으로 필요한 기능을 정의만 해두는 역할을 한다고.. 인터페이스를 지정하는 키워드는 따로 없음. 그런데 설명 중에 implements 키워드를 사용하면 원하는 클래스를 인터페이스로 사용할 수 있다는 설명은 무슨 의미일까? 상속에서 부모 클래스 개념의 키워드를 지정하는 게 없다는 의미인가? 자식 클래스(물론, 인터페이스에서는 그런 개념이 아니지만)에서 사용할 때 extends 대신에 implements를 쓴다는 의미로 일단, 이해함.
GirlGroup을 Girlgroup으로 써서 발생한 오타인데, 이걸 찾으려고 몇 시간을 허비한 건지..ㅜ.ㅜ
믹스인: 특정 클래스에 원하는 기능들만 골라 넣을 수 있는 기능
class Idol{
final String name;
final int membersCount;
Idol(this.name, this.membersCount);
void sayName(){
print('저는 $this.name}입니다.');
}
void sayMembersCount(){
print('${this.name} 멤버는 ${this.membersCount}명입니다.');
}
}
mixin IdolSingMixin on Idol{
void sing(){
print('${this.name}이 노래를 부릅니다.');
}
}
class BoyGroup extends Idol with IdolSingMixin{
BoyGroup(
super.name,
super.membersCount,
);
void sayMale(){
print('저는 남자 아이돌입니다.');
}
}
void main(){
BoyGroup bts = BoyGroup('BTS', 7);
bts.sing();
bts.sayMale();
bts.sayMembersCount();
}
추상: 상속이나 인터페이스로 사용하는 데 필요한 속성만 정의하고 인스턴스화할 수 없도록 하는 기능이란다. (와~ 완전 추상적이다..ㅜ.ㅜ)
2~3쪽 나가는데, 하루씩 걸리고 있네..ㅜ.ㅜ
일단, 오늘도 여기까지..