[JAVA] 인터페이스에 담긴 객체 지향 개념

ggamang·2023년 3월 28일
0

JAVA&Spring

목록 보기
9/27

인터페이스란

오직 상수와 추상 메서드만 존재하는 일종의 추상 클래스
추상화 정도가 높아서 밑그림만 있는 기본 설계도의 개념으로 이해할 수 있다

인터페이스에 내포된 객체 지향 개념

1. 추상화

상수와 '추상' 메서드만 존재하는 일종의 '추상' 클래스
=> 이미 정의에서 추상화 개념을 내포하고 있음을 알 수 있다

2. 상속

인터페이스도 상속이 가능하다
인터페이스로부터만 상속받을 수 있으며, 클래스와는 달리 다중상속이 가능하다

3. 다형성

한 가지 타입으로 여러 구현체를 사용할 수 있다
인터페이스를 사용하면 유지보수가 용이해진다

public interface Tv {
    public void power();
    public void channelUp();
    public void channelDown();
}
public class SamsungTV implements Tv {
    private boolean power;
    private int channel;
    
    public void power() {
        power = !power;
    }

    public void channelUp() {
        channel++;
    }

    public void channelDown() {
        channel--;
    }
}
public class LgTv implements Tv {
  private boolean lgPower;
  private int lgChannel;

  public void power() {
      lgPower = !lgPower;
  }

  public void channelUp() {
      lgChannel++;
  }

  public void channelDown() {
      lgChannel--;
  }
public class Client {
    public static void main(String[] args) {
        Tv tv = new SamsungTv();
        //Tv tv = new LgTv(); // 나머지 변경할 필요 없이 구현 부분만 변경해주면 된다!
        
        tv.power();
        tv.channelUp();
        tv.channelDown();
    }
}

4. 캡슐화

복잡한 내부의 실제 구현(구체 클래스)과 인터페이스를 분리
외부에는 인터페이스 정보만을 공유하여 외부에서 알 필요가 없는 구현 부분을 감출 수 있다

0개의 댓글