본문 바로가기
Study/java

Java 추상클래스(abstract class)와 인터페이스(Interface)의 차이는 무엇일까?

by 얏옹이 2022. 11. 13.
반응형

 

 

 수업을 듣는 도중 의문이 들었다. 추상클래스(abstract class)와 인터페이스(Interface)는.. 얼핏 보면 하는일이 같아보이는데 그럼 추상클래스를 인터페이스처럼 써도 되는거고 인터페이스를 추상클래스처럼 써도 되는거 아닌가?

 

그럼 왜 그 둘이 별개로 나뉘어서 불리는걸까? 궁금증이 들어 이 둘의 차이점을 기록하려 한다.

 

추상클래스 = 추상클래스 안에 메서드는 추상메서드가 존재해야하고, 일반 메서드도 존재 가능하다. 일반메서드는 그대로 사용 가능한 반면, 추상클래스 안에 추상메서드는 하위클래스에서 반드시 오버라이딩 해야한다.

그리고 *추상클래스는 상속관계에 이용되기때문에 한 클래스에 한 상속관계만 가능하다.*

 

인터페이스 = 일반메서드는 존재할수 없다, 기본적으로 전부 추상메서드만 존재하며, 상속과는 달리 *하나의 클래스가 둘 이상의 인터페이스를 동시에 구현 가능하다.* Java8 이상에서는 추상메서드 말고 일반메서드도 존재 가능하지만. 반드시

사용법에 따라 static, defalut 제어자가 붙은 메서드만 존재 가능하다.

 

추상메서드는 상속관계에 있어서 하위클래스에게 확장성을 부여한다고 생각하면 되지만

 

인터페이스는 설계도이자. 규칙이다. 기능을 명시적으로 선언하는 역활을 한다. 

 

쓰임이 비슷한데 왜 이걸 궂이? 라고 생각이 들지만 가장 큰 차이점은 이것인거같다

 

"추상클래스 - abstract, 한클래스에 하나만 상속 가능"

"인터페이스 -  implements, 한클래스에 여러 인터페이스 구현 가능"

 

 

반응형