1. 추상화

추상 클래스

추상 메서드

abstract

추상 클래스와 메서드에는 abstract 키워드가 붙는다. 추상 메서드abstract 키워드와 함께 구현 부분 없이 선언부만 작성한다. 추상 메서드를 포함하는 추상 클래스는 class 앞에 abstract를 작성해야 한다.

2. 인터페이스

인터페이스란?

<aside> 💡 Inter(간/사이) + face*(면)*: 두 객체 간 연결과 소통**을 돕는 다리 역할

</aside>

interface는 구현해야 하는 동작을 작성해 놓고 구현을 강제하도록 하는 일종의 명세서다. 주로 여러 클래스에서 공통적으로 행하는 동작을 정의하고 싶을 때 사용한다.

interface Programmable {
	String[] getTechStack();
	void doProgramming();
}

class Programmer extends Person implements Programmable {
	String[] getTechStack() {
		return techStack;
		}

	void doProgramming() {
		... //구현내용
	}
}

모든 메서드는 컴파일 과정에서 자동으로 public abstract 제어자로 선언된다. 여기서 (default)로 아무 접근제어자 없이 작성한다면 그것은 public이 생략된 것이다. 일반적으로 클래스, 멤버변수, 메서드, 생성자에 접근 제어자가 지정되어 있지 않으면 (default)인 경우와 다르다.

인터페이스의 목적

인터페이스의 구현 방법

인터페이스를 구현하는 클래스는 implements 키워드를 사용하여 구현한다. 또한 상속과 달리, 한 클래스가 여러 인터페이스를 구현하는 다중 구현이 가능하다.

public class MyClass implements Interface1, Interface2 { ... }

추상화 vs 인터페이스