상세 부분이 정의 되지 않은 클래스
상속의 재료로 사용 되는 클래스
// 추상 클래스
abstract class Character {
String name;
int hp;
Character(this.name, this.hp);
void run() {
print('$name이 도망쳤다.');
}
// 추상 메소드
void attack(Slime slime);
}
추상클래스는 인스턴스화가 금지 돼 있다.
모든 메소드는 추상 메소드여야 한다.
필드를 가지지 않는다.
abstract interface class Human {
void speak();
}
class SeoulCleaningService implements CleaningService {
Coat washCoat(Coat coat) {
return coat;
}
Shirt washShirt(Shirt shirt) {
return shirt;
}
Tower washTower(Tower tower) {
return tower;
}
}
같은 인터페이스를 구현한 클래스들은 공통 메소드를 구현하고 있음을 보장.
어떤 클래스가 인터페이스를 구현하고 있다면, 적어도 그 인터페이스에 정의된 메소드를 가지로 있다는 것이 보증 된다.
다중상속의 효과를 낼 수 있음
class SeoulCleaningService implements CleaningService, Store { ...