본문 바로가기
Application/Java

[Jump2Java] 05장 객체지향 프로그래밍 05

by 윤루트 2021. 9. 14.

Jump2Java 05장. 객체지향 프로그래밍

- 인터페이스

 

 

인터페이스

  • 객체와 객체 사이에서 일어나는 상호 작용의 매개로 쓰인다. (서로 이어주는 다리 역할과 프로젝트의 설계도로 생각하면 됩니다.)
  • 모든 기능을 추상화로 정의한 상태로 선언만 한다.
public interface InterfaceName {

// ..

}
  • 인터페이스의 사용 이유 (장점)
    • 개발 시간을 단축 시킬 수 있습니다.
    • 이러한 특징을 가진 인터페이스를 사용하면 다른 개발자들이 각각의 부분을 완성할 때 까지 기다리지 않고 서로 규약만 정해두어 각자의 부분만 따로 나눠서 작성된 코드를 컴파일 할 수 있습니다.
    • 클래스간 결합도를 낮출 수 있습니다.
    • 코드의 종속성을 줄이고 유지보수성을 높이도록 해줍니다.
    • 표준화가 가능합니다.
    • 클래스의 기본틀을 제공하여 개발자들에게 정형화된 개발을 강요할 수 있습니다.
  • 하나의 인터페이스로 여러 구현체를 쉽게 구현할 수 있다.
  • 예시 - ZooKeeper가 Predator에게 먹이를 주는 구현
// Predator.java (interface)

public interface Predator {
	public String getFood();
}
// Tiger.java

public class Tiger extends Animal implements Predator{
// interface를 implements 하면 해당하는 interface 안에 있는 메서드를 정의해야 한다.
	public String getFood() {
		return "apple";
	}
}
// Lion.java

public class Tiger extends Animal implements Predator{
	public String getFood() {
		return "banana";
	}
}
// ZooKeeper.java (main)

public class ZooKeeper {
	public void feed(Predator predator) {
		System.out.println("feed " + predator.getFood());
	}
	public static void main(String[] args) {
		ZooKeeper zooKeeper = new ZooKeeper();
		Tiger tiger = new Tiger();
		Lion lion = new Lion();
		zooKeeper.feed(tiger);
		zooKeeper.feed(lion);
	}
}

/* 출력결과
feed apple
feed banana
*/
  • ZooKeeper 클래스가 동물들의 종류에 의존적인 클래스에서 동물들의 종류와 상관없는 독립적인 클래스가 되었다는 점이 인터페이스의 핵심이다.

 

댓글