추상 클래스와 인터페이스

허준호·2025년 6월 27일
0

dart 언어 공부

목록 보기
5/16
post-thumbnail

추상 클래스(abstract class)

다른 클래스들에게 공통된 속성과 메소드를 제공하는 클래스이다.

특징

  • 상속의 재료로 사용되는 클래스이다
  • 상세 부분이 일부 미정의 된 클래스이다
  • 인스턴스를 생성할 수 없다
  • 추상 메소드를 가질 수 있다

추상 메소드

선언은 되어있으나 코드가 구현되어 있지 않은 메소드이다

사용법

  1. 추상 클래스 내에서 추상 메소드를 정의한다
abstract class Character {
	String name;
	int hp;
	
	Character(this.name, this.hp);
	
	void attack(Slime slime); // 추상 메소드
}
  1. 상속받는 클래스에서 추상 메소드를 오버라이드하여 구현한다
class Hero extends Character {
	Hero(super.name, super.hp);
	
	
	void attack(Slime slime) {
		print('$name이 $slime을 공격했다')
	}
}

인터페이스(interface)

클래스가 필수적으로 구현해야 하는 메소드의 목록을 정의

특징

  • 필드가 존재하지 않는다
  • 모든 메소드는 추상 메소드여야 한다
  • 추상 메소드만 가지는 추상 클래스가 인터페이스이다

사용법

abstract interface class Animal {
	void run();
}

class Dog implements Animal {
	String name;
	
	Dog(this.name);
	
	
	void run() {
		print('$name이 달립니다');
	}
}

효과

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

추상 클래스 vs. 인터페이스

추상 클래스

  • 필드와 메소드를 정의할 수 있다
  • 추상메소드도 정의할 수 있다
  • extends 키워드
  • 다중 상속이 불가능하다 ⇒ class A extends B

인터페이스

  • 추상메소드만 정의할 수 있다
  • implements 키워드
  • 다중 인터페이스 구현이 가능하다 ⇒ class A implements B, C {}

마커 인터페이스

아무 내용(메서드, 필드)도 없이 타입 체크 또는 특정 의미를 부여하기 위해 사용하는 인터페이스


profile
후추랑 소금 좋아하는 개발자

0개의 댓글