AI: 추상 클래스란 하나 이상의 추상 메소드를 포함하거나 abstract로 선언된 클래스를 말합니다. 추상 메소드란 선언만 있고 구현 내용이 없는 메소드를 말합니다. 이 추상 클래스는 직접 객체를 생성할 수 없고, 상속을 통해 자식 클래스에서 구현해야 합니다. 이를 통해 필요한 메소드를 강제로 오버라이드하도록 하여 프로그램의 안정성을 높이는 역할을 합니다.
추상클래스, 상속의 재료로 사용되는 클래스. 상세 부분이 정의되지 않은 클래스를 말한다. 상속의 재료로서 부모 클래스를 개발하면 예기치 않은 인스턴스화나 오버라이드의 미구현의 휴먼에러 걱정이 없다.
abstract 메서드는 상세정의가 없는 메서드를 의미한다. 메서드의 { }를 없애면 된다.
abstract 메서드는 abstract 클래스 안에 있어야 하며 추상클래스는 인스턴스화를 할 수 없다.
//추상클래스
abstract class Character {
String name;
int hp;
Character(this.name, this.hp);
void attack(Slime slime); //추상메서드
}
Ai: 인터페이스는 클래스나 객체의 동작을 명세하는 데 사용되는 추상 타입입니다. 인터페이스는 메소드와 속성을 정의할 수 있지만, 이들은 구현되지 않습니다. 대신에 이 인터페이스를 구현하는 클래스에서 해당 메소드와 속성을 정의해야 합니다. 이렇게 함으로써, 인터페이스를 사용하는 코드는 인터페이스의 실제 구현에 대해 알 필요 없이 인터페이스와 상호 작용할 수 있습니다.
인터페이스는 객체지향의 꽃이다. 인터페이스 안의 모든 메서드는 추상 메서드여 하고, 필드를 가지지 않는다. 기능만 모아둔 기능의 집합이라고 볼 수 있다.
기능이 있는 껍데기로 implements[:구현하다]를 사용해 인터페이스를 구현할 수 있다. 이 인터페이스를 구현하는 클래스에서 해당 메소드를 정의한다.
상속과 동시 사용이 가능하다.
여러개 구현이 가능해 다중상속의 효과를 낼 수 있다.
-Human 인터페이스
abstract interface class Human {
void speak();
void walk();
void eat();
}
-Human 인터페이스를 구현한 Man 클래스
class Man implements Human {
void speak() {
print('speaking');
}
void walk() {
print('walking');
}
void eat() {
print('eating');
}
}
같은 인터페이스를 구현한 클래스들은 공통 메서드를 구현하고 있음을 보장한다.
어떤 클래스가 인터페이스를 구현하고 있다면, 적어도 그 인터페이스에 정의된 메서드를 가지고 있다는 것이 보증된다.