Code&Data Insights
[ Java Programming ] Interface와 Abstract의 차이점 본문
[ 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 각각 다른 특성을 가짐, 상속을 위한 클래스)
'Computer Science > Java Programming' 카테고리의 다른 글
[ Java Programming ] Static 개념 끝내기 ( Variables & Static Methods ) (0) | 2022.07.18 |
---|---|
[ Java Programming ] StringBuffer class & StringBuilder class (0) | 2022.06.15 |
[ Java Programming ] LinkedList / LinkedList vs ArrayList (0) | 2022.06.02 |
[ Java Programming ] Recursion (0) | 2022.04.19 |
[ Java Programming ] Inner Class (0) | 2022.04.17 |