본문 바로가기

오름캠프 flutter과정 정리

8일차정리(추상클래스와 인터페이스)

추상클래스와 인터페이스

추상클래스

  1. 상속의 재료로 사용 되는 클래스
  2. 상세 부분이 미정의 된 클래스

추상클래스는 클래스키워드 앞에서 abstract 를 기술 한다

abstract class Character{
  String name;
  
	void attack(Slime slime); //추상메서드 -> 함수의 몸체가 없다.
}

추상클래스는 객체 생성이 직접되지 않는다 다만 추상메소드를 상속받은 클래스는 객체 생성가능

그리고 또한 추상메서드는 추상메서드를 오버라이드해서 실제내용을 구현해야한다.


인터페이스

  1. 모든 메소드는 추상 메소드 여야 한다
  2. 필드를 가지지 않는다

기능의 구현이 필요한 것을 묶은 것으로 해당 인터페이스에 대해서 일반클래스에 implements 하여 구현하도록 강제하는 것이다.

abstract interface class Human { //인터페이스의 해당예 class앞에 abstract interface 붙임
	void speak();
}

인터페이스의 효과

  1. 같은 인터페이스를 구현한 클래스들은 공통 메소드를 구현하고 있음을 보장
  2. 어떤 클래스가 인터페이스를 구현하고 있다면, 적어도 그 인터페이스에 정의된 메소드를 가지고 있다는 것이 보증된다

단 특징적으로 일반클래스에서 여러 인터페이스를 다중으로 받아서 구현할 수 있다.

class Store implements Buy, Sell{

extends와 implements 를 동시에 사용

class Dancer extends Character implements Human

상속의 재료를 작성하는 개발자의 입장과 역할

  • 다른 사람이 상속의 재료로 사용할 부모 클래스를 만드는 입장의 개발자도 존재 한다
  • 미래의 개발자가 효율 좋게 안심하고 이용할 수 있는 상속의 재료를 작성하는 것이 그의 사명

추상 클래스

  • 내용이 정의되지 않고 상세정의 미정인 메소드가 있는 클래스는 abstract 를 붙여서 추상메소드로 한다
  • 추상 클래스는 인스턴스화 할 수 없다
  • 추상 클래스와 추상 메소드를 활용한 상속의 재료로서의 부모클래스를 개발하면, 예기치 않은 인스턴스화나 오버라이드의 미 구현의 걱정이 없다

인터페이스

  • 추상 클래스 중에, 기본적으로 추상메소드만 가지고 있는 것을 인터페이스 로서 특별 취급 한다
  • 복수의 인터페이스를 부모로 두는 다중상속 효과가 가능
  • 인터페이스를 부모로 두는 자식 클래스 정의에 implements 를 사용
  • interface 키워드는 Dart 3에 추가되었음