본문 바로가기

Java

추상 클래스 & 인터페이스

훈수/저작권 관련 지적 환영합니다 - 댓글 또는 audgnssweet@naver.com

 

추상 클래스 vs. 인터페이스


앞서 추상 클래스와 인터페이스에 대해서 알아보았었는데요

비슷한 점이 많았습니다.

그럼 비슷한데 구분하는 게 의미가 있나?라고 생각하실 수도 있는데

다른 점들이 있습니다.

 

목적에서 가장 큰 차이를 갖는다고 할 수 있습니다.

 

추상 클래스는 코드의 집중이 목적입니다.

하위 클래스에서 필요로 하는 공통적인 기능들은 구현해두고 상속받아 활용할 수 있도록 하되,

하위 클래스에서 구현할 수 밖에 없는 기능들을 추상 메서드로 정의하여 다형성을 실현합니다.

 

인터페이스는 코드의 분리가 목적입니다.

두 모듈 사이에 인터페이스를 두어 모듈의 응집력은 높이되 의존성은 낮춥니다.

개발자로 하여금 인터페이스의 목적에 따라, 상속받는 클래스에서 추상 메서드를 정의하도록 하여 다형성을 실현합니다.

 


상속과 구현을 동시에 할 때

abstract class UpClass {
    public abstract void print();
}

interface MyInterface {
    void doSomething();
}

interface MyInterface2 {
    void doSomething2();
}


class MyImpl extends UpClass implements MyInterface, MyInterface2 {

    @Override
    public void print() {
        System.out.println("추상 클래스 구현");
    }
    
    @Override
    public void doSomething() {
        System.out.println("인터페이스1 구현");
    }

    @Override
    public void doSomething2() {
        System.out.println("인터페이스2 구현");
    }
}

위와 같이 사용합니다.

 

오늘은 추상 클래스와 인터페이스의 차이에 대해서 알아보았습니다.

'Java' 카테고리의 다른 글

Join 종류  (0) 2021.05.12
인터페이스  (0) 2021.05.11
추상 메서드와 추상 클래스  (0) 2021.05.11
(상속) 메서드 오버라이딩과 다형성  (0) 2021.05.11
(상속) 메서드 오버라이딩과 동적 바인딩  (0) 2021.05.07