[Java] abstract class & Interface

한호성·2022년 7월 20일
0

추상클래스와 인터페이스

추상클래스란?

일반 클래스와 많이 다르지 않다. 추상 메소드를 선언할 수 있고, 상속을 통해서 자손 클래스에서 완성하도록 유도하는 클래스이다. 상속을 위한 클래스라고 생각할 수 있다.

인터페이스란?

추상클래스와 마찬가지로 추상 메소드를 선언하고, 상속받는(implements 하는) class에서 추상 메소드를 구현을 하도록 한다. 추상클래스와 다른점은 다중상속이 가능하다는 점이다.

이 둘의 차이점?

언뜻보면 두개 모두 추상 메소드를 지원하고 상속받는 객체가 구체화하는 것으로 보이며, 큰 차이가 없어 보인다. 그렇다면 무엇이 다를까?

우선 추상클래스는 공통으로 사용되는 부분을 정의가 가능하며, 상속받는 객체에서 구체적으로 정의되어야 하는 것은 추상 메소드로 남겨둘 수 있다. 즉 공통적인 부분은 부모에서 정의, 상속받는 자식에서 구현 되어야 하는 부분은 추상 메소드로 만들어 둘 수 있다는 점이다.

그에 반해 인터페이스는 추상메소드 와 static final 변수로 이루어 질 수 있다. 즉 인터페이스에서는 구현되어야 하는 부분은 없다. 모두 상속받는 자식에서 구현 되어야 한다.

여기까지 봤을 때, 추상 클래스랑 별로 안다른거 같은데 라고 생각할 수 있다. 하지만 인터페이스는 클래스와 다르게 여러 개를 상속할 수 있다. 이게 가장 큰 차이점이라 생각한다. 또한 인터페이스는 상속과도 같이 사용 가능하기 때문에, 상황에 따라 사용하면 될 것 같다.
ex) 상속을 다르게 받은 두 객체가 같은 기능을 구현해야할 때, 각각의 객체에서 Interface를 implements 하여 구현하도록 할 수 있다.

한줄 요약

추상 클래스는 하위 클래스로 상속하면서 기능을 확장 및 재사용하기 위할 때 사용하고, 인터페이스 같은 경우 각 클래스의 목적에 맞게 기능을 구현할 때 사용한다.

#cf)
조사를 하다보니, 인터페이스를 장점을 따로 정리해보는 것도 좋겠다고 생각했다. + OOP의 다형성 등등 각종 특징들도 따로 정리해보는 시간을 갖도록 하자.

Reference

https://myjamong.tistory.com/150
http://alecture.blogspot.com/2011/05/abstract-class-interface.html

profile
개발자 지망생입니다.

0개의 댓글