본문 바로가기
Flutter

[Flutter] 플러터 객체지향 프로그래밍 - (3) 믹스인과 추상

by jungha_k 2023. 6. 8.

* 믹스인 : 

특정 클래스에 원하는 기능들만 골라넣을 수 있는 기능

특정 클래스를 지정 - 속성 정의 가능,

지정한 클래스를 상속하는 클래스에서도 사용 가능

 

한 개의 클래스에 여러 개의 믹스인 적용 가능

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}명 입니다.');
    }
}

 

댓글