여러 인터페이스 구현, 디폴트 메서드가 중복되는 경우

겨울조아·2023년 3월 18일
0

여러 인터페이스 구현, 디폴트 메서드가 중복되는 경우

  • 구현 코드를 가지고 인스턴스 생성된 경우만 호출되는 디폴트 메서드의 경우 두 개의 인터페이스에서 중복되면 구현하는 클래스에서 반드시 재정의를 해야 함
  • 여러 인터페이스를 구현한 클래스는 인터페이스 타입으로 형 변환 되는 경우 해당 인터페이스에 선언된 메서드만 사용 가능 함

Buy.java

public interface Buy {

	void buy();

	default void order() {
		System.out.println("buyer order");
	}
}

Sell.java

public interface Sell {

	void sell();

	default void order() {
		System.out.println("seller order");
	}
}

Customer.java

public class Customer implements Buy, Sell {

	@Override
	public void sell() {
		System.out.println("customer sell");
	}

	@Override
	public void buy() {
		System.out.println("customer buy");
	}

	public void sayHello() {
		System.out.println("say Hello");
	}

	@Override
	public void order() {
		System.out.println("customer order");
	}
}

CustomerTest.java

public class CustomerTest {

	public static void main(String[] args) {

		Customer customer = new Customer();
		customer.sell();
		customer.buy();
		customer.sayHello();

		Buy buyer = customer;
		buyer.buy();

		Sell seller = customer;
		seller.sell();

		customer.order();
		buyer.order();
		seller.order();
	}
}

결과


인터페이스끼리 상속 가능

  • extends 사용
  • 인터페이스는 다중 상속이 가능하고 구현 코드의 상속이 아니므로 타입 상속 이라고 함

클래스 상속과 인터페이스 구현 함께 쓰기

  • 실무에서 프레임워크나 오픈소스와 함께 연동되는 구현을 하게 되면 클래스 상속과 인터페이스의 구현을 같이 사용하는 경우가 많음

0개의 댓글