인터페이스 VS 추상클래스(메서드) - 혼동하기 쉬운 개념

Objective_chicorita·2022년 8월 8일
0

추상 클래스

  • '미완성 설계도'라는 별명으로 말 그대로 미완성이여서 인스턴스(객체)를 생성할 수 없습니다.
    • => 인스턴스를 생성하기 위해서는 상속 받아 자식클래스에서 추상 클래스 내에 있는 모든 추상 메서드를 구현부를 오버라이딩 해줘야 합니다.
    • 상속 받은 자식 클래스는 추상 클래스 안에 있는 모두 추상 메서드를 오버라이딩해야합니다.
    • 만약 추상클래스를 new연산자로 생성하면 에러가 발생!
public abstract class 클래스명 {
	// 필드
    // 스태틱 메서드
    // 추상 메서드 abstract 리턴타입 메서드명 ();  *메서드는 구현부가 없음! 
    // 생성자
}

추상 클래스 사용 목적

: 공통적인 메서드 부분만 추상클래스에 작성하고 차이점이 존재하는 부분은 실체 클래스에서 따로 작성함.

인터페이스

  • 인터페이스는 '기본 설계도'라는 별명으로 상수형 필드와 추상 메서드만 가진 추상 클래스이다.
    • 인터페이스는 추상메서드, 일반메서드 모두 반드시 오버라이딩을 해줘야 합니다.
public interface 인터페이스명 {
	public abstract void 메서드이름 ( ); // 추상 메서드
    public void 메서드이름( ); //일반 메서드

상속과 인터페이스

<상속>

  • 객체지향의 상속은 상위 클래스의 특성을 재사용하는 것이 아닙니다.
  • 객체지향의 상속은 상위 클래스의 특성을 확장하는 것입니다.
  • 객체지향의 상속은 is kind of 관계를 만족해야 합니다.

<인터페이스>

  • 인터페이스는 구현 클래스 is able to 인터페이스라는 관계를 만족해야 합니다.
  • 즉, 무엇을 할 수 있는 이란 표현입니다.
  • 인터페이스는 클래스가 무엇을 할 수 있다라고 하는 기능을 구현하도록 강제하는 특징이 있음.

결론은!
상위 클래스는 물려줄 특성이 풍성할수록 좋고, 인터페이스는 구현을 강제할 메서드의 개수가 적을 수 록 좋다는 결론에 도달할 수 있습니다!

추상메서드와 인터페이스의 공통점과 차이점

공통점)

  • 추상 메서드를 가진다.
  • 객체 생성이 불가하며 자료형(타입)으로 사용된다.

차이점)

  • 인터페이스
    • 상수형 필드, 추상메서드만 가진다.
    • 추상 메서드를 구현만 하도록 한다.
    • 다형성을 지원한다.
    • 대표적으로 JDBC가 있는데 이럴 때는 각 DBMS 들이 자신의 기능에 맞게 인터페이스의 정의된 메서드를 구현한 느낌.
  • 추상 클래스
    • 클래스가 가지는 모든 속성과 기능을 가진다.
    • 추상 메서드는 구현 및 상속의 기능을 가진다.
    • 단일 상속만 지원한다.
    • 동물 상속 관계에서 하위 클래스인 고양이,강아지 등등은 울어보세요() 메서드를 자신의 특징에 맞게 확장해서 사용하는 느낌

인터페이스는 implements 키워드를 사용해서 인터페이스에 정의된 메서드를 각 클래스이 목적에 맞게 기능을 구현한 느낌!

추상 클래스는 extends 키워드를 사용해서 자신의 기능들을 하위 클래스로 확장 시키는 느낌!

profile
객체지향 치코리타와 함께하는 dev_travel

0개의 댓글