본문 바로가기
어딘가에 맞춰질 퍼즐 조각들

[JAVA] 추상클래스(Abstract class)와 인터페이스(Interface)

by 황원용 2022. 9. 19.
728x90

추상클래스

  •  클래스 내에 하나 이상의 추상메서드가 포함된 경우나, abstract로 정의된 클래스를 추상클래스라고 한다.

 

 

인터페이스

  •  모든 메서드가 추상 메서드인 경우이다.

 

 

공통점

  • 추상메서드라는 내용에 대한 구현이 없는 선언부만 가지고 있는 메서드를 가지고 있으며, 독립적으로 객체를 생성할 수 없다.
  • 여러 곳에서 사용될 공통된 기능에 대한 구현을 강제하기 위해 사용한다.

 

 

차이점

  • 추상 클래스는 상속받은 하위 클래스에 자신의 기능을 확장시키기 위해 사용한다.
  • 인터페이스는 인터페이스에 정의된 메서드를 각 구현 객체의 목적에 맞게 같은 동작을 만들어내기 위해 사용한다.
  • 추상 클래스는 이를 상속할 각 객체들의 공통점을 찾아 추상화 시켜놓은 것으로 상속 관계를 타고 올라갔을 때 같은 부모 클래스를 상속하며 부모 클래스가 가진 기능을 구현하는 경우에 사용한다.
  • 인터페이스는 상속관계를 타고 올라갔을 때 다른 부모 클래스를 상속하더라도 같은 기능이 필요한 경우에 사용한다.
  • 추상 클래스는 단일 상속만 되며, 인터페이스는 다중 상속이 가능하다. 

 

 

추상 클래스의 기능

  •  상속 관계에 있어 새로운 클래스를 작성하는데 매우 유용하다. 메서드의 내용이 상속을 받는 클래스에 따라 달라지기 때문에 상위 클래스에서 선언부만 작성하고 실제 구체적인 내용은 하위 클래스에 작성한다면 변경 사항이 있어도 유연하게 대응할 수 있다.

 

 

 

인터페이스의 기능

  •  역할과 구현을 분리시켜 복잡한 구현의 내용과 그 내용의 변경에 관계없이 해당 기능을 사용할 수 있고, 같은 인터페이스를 구현한 객체들이 같은 동작을 할 수 있게 한다.

 

 

참고

https://hahahoho5915.tistory.com/70

728x90