Code&Data Insights

[ Java Programming ] Interface와 Abstract의 차이점 본문

Computer Science/Java Programming

[ Java Programming ] Interface와 Abstract의 차이점

paka_corn 2022. 6. 9. 08:54

 

Interface와 Abstract의 차이점 

[ The difference between Interface and Abstract Class ] 

 

 

 

(1) Accessibility of Data Members

 

인터페이스에서는 상수만 선언가능  <public static final >,

 반면, 추상클래스는 concrete class와 같이 fields 선언 가능. 

 

 

 

(2) Keywords

 

인터페이스에서는 implements를 쓰지만, 추상클래스에서는 extends를 사용한다. 

( 하지만, 인터페이스가 다른 인터페이스(one or more)를 상속할 경우에는 extends 키워드를 사용한다. )

 

 

 

 

(3) Access Modifier

 

인터페이스는  fields, methods 모두 다 public! 

추상클래스는 public,protected methods를 가질 수 있고, 

 private 변수 또한 가질 수 있다.

 

 

 

 

(4) Abstract Methods 

 

인터페이스와 추상 클래스 모두 abstract method를 가지고 있다.

 

* abstract method를 하나라도 가지고 있으면 해당 class는 abstract class가 된다.

-> abstract class를 상속한 클래스의 경우에도 base class(abstraact class)내의 모든 abstract methods들을 

implement 하지 않으면, 그 class는 Concrete class가 될 수 없다(= abstract class가 자동적으로 되버림) 

 

* 인터페이스는 abstract methods만 가질 수 있다.

( 하지만, 현재는 static methods/default methods를 가질 수 있으며, 

abstract methods와 달리 바디 구현이 가능하다. ) 

-> abstract method 하나만 가지고 있는 interface는 

functional interface<Lambdas>로 사용 가능

(ex) Comparable 

 

 

 

 

 

(5) 사용용도의 차이

 

인터페이스: Has-A Relationship

( 특별한 기능 구현 but 각각 객체마다 구현 필요X, 공통된 기능(유지보수에 탁월) ,~할수 있는, 다중구현 )

(ex) 관련 없는 class들을 묶어서 공통적인 기능 추가를 할 수 있다. 

 

추상클래스: Is-A Relationship ( 공통된 기능 but 각각 다른 특성을 가짐, 상속을 위한 클래스) 

 

 

 

 

 

 

Comments