추상클래스 vs 인터페이스

서은경·2022년 7월 19일
0

Java

목록 보기
15/19

형태가 너무 비슷해서 항상 헷갈렸던 추상클래스와 인터페이스..
오늘 정확하게 개념 정리하고 넘어가기 !

추상클래스

  • 추상 메소드를 최소 한 개 이상 가지고 abstract로 선언된 클래스
  • 추상 메소드가 없어도 abstract로 선언한 클래스
  • 다중상속 불가

인터페이스

  • 상수 필드와 추상 메소드만으로 구성
  • 모든 메소드는 추상 메소드로서, abstract public 속성이며 생략 가능
  • 인터페이스를 상속받아 새로운 인터페이스를 만들 수 있고 다중상속 가능

공통점

  • 추상 메소드로 구현되어 있다
  • 인스턴스를 생성할 수 없다
  • 상속받을 서브 클래스에게 구현할 메소드들의 원형을 알려준다

차이점

추상클래스는 상속을 통한 서브 클래스의 다형성 실현이 목적이고, 인터페이스는 클래스가 자신의 목적에 맞게 메소드를 구현하도록 하는 것이 목적이다.
즉 추상클래스는 슈퍼 클래스의 이용과 확장, 인터페이스는 동일 기능 구현이 목적이라고 할 수 있겠다.

ex)
추상 클래스

abstract public class Device {
    abstract void shape(String shape);
    abstract void onOff(String status);
    abstract void battery(int battery);
}

인터페이스

public interface AlbumInterface {
    public void album();
}

public interface ChatInterface {
    public void chat(String to, String from);
}

public interface MusicInterface {
    public void listenMusic();
}

인스턴스

public class Camera extends Device implements AlbumInterface{

public class Computer extends Device implements ChatInterface, MusicInterface{

public class MP3 extends Device implements MusicInterface{

public class Phone extends Device implements MusicInterface,ChatInterface,AlbumInterface{

사용 예를 들자면 이렇게 되지 않을까?!

0개의 댓글

관련 채용 정보