본문 바로가기
Flutter

[Flutter] 플러터 객체지향 프로그래밍 - (2) 상속 및 오버라이드, 인터페이스

by jungha_k 2023. 6. 8.

* 상속

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

 

댓글