https://brunch.co.kr/@kd4/6

클래스는 크게 일반 클래스와 추상 클래스로 나뉘는데 추상 클래스는 클래스 내 추상메소드가 하나 이상 포함되거나 abstract로 정의된 경우를 말합니다. 반면 인터페이스는 모든 메소드가 추상 메소드인 경우입니다.

하는일을 생각해보면 결국 추상 메소드를 구현하는것, 추상 클래스 안에 추상 메소드를 여러개 두거나 혹은 전부 추상 메소드만 두면 될 텐데 왜 인터페이스가 존재하는 것일까요?

인터페이스와 추상 클래스는 존재 목적이 다릅니다. 추상 클래스는 그 추상 클래스를 상속받아서 기능을 이용하고 확장시키는데 있습니다. 반면에 인터페이스는 함수의 껍데기만 있는데, 그 이유는 그 함수의 구현을 강제하기 위해서 입니다. 구현을 강제함으로써 구현 객체의 같은 동작을 보장할 수 있습니다.

인터페이스안의 모든 메소드들은 추상메소드이다.

추상클래스도 인터페이스처럼 추상클래스가 아닌 클래스에서 상속을 받는다면 추상메소드가 있을경우 모두 구현해주어야한다.

인터페이스는 안이 비어있는 메소드들의 형태들만 써놓은 것이며 상속하는 클래스들에서 해당 메소드들의 내용을 구현해서 가져가야하는 메소드들의 집합이라 할수있다.

추상클래스 대표적인 의미라는

Downcasting

interface 선언 357p

public class MyClass {
	// 필드 선언
	RemoteControl rc = new Television();

	MyClass() {
		rc = new Television();
	}
	
	// 생성자 내 선언
	MyClass(RemoteControl rc) {
		this.rc = rc;
	}
	
	// 메소드
	void methodA(Remote Control rc) {

	)