item 20 : 추상클래스보다는 인터페이스를 고려하라
1. 자바에서의 다중 구현 매커니즘
2. 인터페이스를 사용했을 때의 장점
1) 기존 클래스에도 손쉽게 새로운 인터페이스를 구현해넣을 수 있다
// 새로운 인터페이스 Comparable 추가
// Employee 클래스는 Person을 상속하면서 Comparable 인터페이스를 구현한다
interface Comparable<T> {
int compareTo(T o);
}
// 기존 클래스
class Person {
private String name;
public Person(String name) {
this.name = name;
}
public String getName() {
return name;
}
}
// Person 클래스가 인터페이스 Comparable을 구현할 수 있음
class Employee extends Person implements Comparable<Employee> {
private int id;
public Employee(String name, int id) {
super(name);
this.id = id;
}
@Override
public int compareTo(Employee o) {
return Integer.compare(this.id, o.id); // Employee의 id로 비교
}
}
public class Main {
public static void main(String[] args) {
Employee e1 = new Employee("Alice", 100);
Employee e2 = new Employee("Bob", 200);
System.out.println(e1.compareTo(e2)); // -1 출력
}
}
2) 인터페이스는 믹스인(mixin) 정의에 안성맞춤이다.
예시 코드
3) 인터페이스로는 계층구조가 없는 타입 프레임워크를 만들 수 있다.
4) 래퍼 클래스 관용구와 함께 사용하면 인터페이스는 기능을 향상시키는 안전하고 강력한 수단이 된다.
3. 인터페이스와 추상 골격 구현 클래스
1) 인터페이스와 디폴트 메서드, 골격 구현에 대한 설명
2) 예시 코드
3) 디폴트 메서드와 골격 구현 비교
✨ 최종 정리
Last updated