* 상속
: extend 키워드를 사용해 상속
어떤 클래스의 기능을 다른 클래스가 가능토록 하는 것
// A : 부모 클래스
class A{
int String name;
int int age;
A(this.name, this.age);
void sayName(){
print('저는 ${this.name}입니다.');
}
void sayAge(){
print('저는 ${this.age}입니다.');
}
}
// 상속 (B : 자식 클래스)
class B extends A{
// 생속받은 생성자
B(
String name,
int age,
) : super( //super : 부모 클래스
name,
age,
);
// 상속받지 않은 기능
void sayNothing(){
print('나띵!!');
}
}
* 오버라이드 :
부모 클래스, 인터페이스에 정의된 메서드를 재정의할 때 사용
(override 키워드 생략 가능, but 직접 명시해주는게 협업 및 유지보수에 유리)
class C extends Idol{
C(
super.name,
super.age,
);
@Overide //부모 클래스에 이미 존재하는 메서드를 재정의
void sayName(){
print('저는 ${this.name}입니다.');
}
}
* 인터페이스 :
공통으로 필요한 기능을 정의만 해두는 역할
다트에는 인터페이스를 지정하는 키워드가 따로 없다!
상속 - 단 하나의 클래스만 할 수 있음
부모 클래스의 모든 기능이 상속됨 → 재정의할 필요가 없음
↕
인터페이스 - 적용 개수에 제한 없음
반드시 모든 기능을 다시 정의해줘야 함
// 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] 플러터 객체지향 프로그래밍 - (3) 믹스인과 추상 (0) | 2023.06.08 |
[Flutter] 플러터 객체지향 프로그래밍 - (1) 클래스 (0) | 2023.06.07 |
[Flutter] 플러터의 스키아(Skia) 엔진 및 구조 (0) | 2023.06.02 |
댓글