관리 메뉴

Frog is cry

인터페이스와 추상클래스의 차이 본문

JAVA/복습

인터페이스와 추상클래스의 차이

Frog is cry 2020. 7. 25. 17:07

인터페이스와 추상클래스의 차이를 알아보자 !

 

설명 :

클래스는 크게 일반 클래스와 추상 클래스로 나뉘는데

추상 클래스는 클래스 내 '추상 메소드'가 하나 이상 포함되거나 abstract로 정의된 경우를 뜻한다. 

 

반면 인터페이스는 모든 메소드가 추상 메소드인 경우입니다. ★★★★★

(JAVA8 에서는 defalt 키워드로 일반 메소드의 구현도 가능)

 

추상 클래스와 인터페이스는 상속받는 클래스 혹은 구현하는 인터페이스 안에 있는 추상 메소드를 구현하도록 강제한다.

 

Q&A : 둘 다 추상 메소드를 구현하는 일을 하는데 굳이 왜 둘다 필요한지?

우선 인터페이스와 추상 클래스는 존재 목적이 다름.

1. 추상 클래스는 그 추상 클래스를 상속받아서 기능을 이용하고, 확장시키는데 있음.

2. 인터페이스는 함수의 껍데기만 있으며, 그 이유는 그 함수의 구현을 강제하기 위해서임. 

구현을 강제함으로써 구현 객체의 같은 동작을 보장할 수 있기 때문이다.

 

추상 클래스(abstratc class)의 특징 :

1. 추상 클래스는 new연산자를 사용하여 객체를 생성할 수 없다.

2. 추상 클래스(부모)와 일반클래스(자식)는 상속의 관계에 놓여있다.

3. 추상 클래스는 새로운 일반 클래스를 위한 부모 클래스의 용도로만 사용된다.

4. 일반 클래스들의 필드와 메소드를 통일하여 일반 클래스 작성 시 시간을 절약할수 있다.

5. 추상 클래스는 단일 상속만 가능하며 일반 변수를 가질 수 있다.

6. 추상 클래스는 동일한 부모를 가지는 클래스를 묶는 개념으로 상속을 받아서 기능을 확장시키는것이 목적이다.

 

인터페이스(interface)의 특징 :

1. 인터페이스는 모든 메서드가 추상 메서드인 경우를 말한다.

2. 인터페이스는 추상 클래스보다 한 단계 더 추상화된 클래스라고 볼 수 있다.

3. 인터페이스에 적는 모든 메서드들은 추상 메서드로 간주되기 때문에 abstract을 적지 않는다.

4. 인터페이스는 static final 필드만 가질 수 있다. 필드를 선언할 때는 public static final 기능이 생략되어있다.

5. public static final을 사용하는 이유는 다음과 같다.

 > 구현 객체의 같은 동작을 보장하기 위한 목적(값을 추가하거나 그런것을 불가능하도록)

 > 인터페이스의 변수는 스스로 초기화 될 권한이 없음

 > 아무 인스턴스도 존재하지 않는 시점이기 때문

6. 인터페이스도 추상 클래스와 마찬가지로 new 연산자를 사용하여 객체를 생성할 수 없다.

7. 인터페이스는 구현 객체가 같은 동작을 한다는 것을 보장하는 것이 목적이다.

8. 인터페이스는 추상 클래스와 반대로 다중 상속이 가능하다.

 

추상 클래스와 인터페이스의 차이점

1. 추상 클래스(단일상속) / 인터페이스(다중상속)

2. 추상 클래스의 목적은 상속을 받아서 기능을 확장시키는 것

3. 인터페이스의 목적은 구현하는 모든 클래스에 대해 특정한 메서드가 반드시 존재하도록 강제하는 역할

(구현 객체가 같은 동작을 한다는 것을 보장하기 위함)

 

 

 

 

 

'JAVA > 복습' 카테고리의 다른 글

내부클래스(Out Class)  (0) 2020.07.29
For-each  (0) 2020.07.29
인터페이스  (0) 2020.07.22
추상클래스  (0) 2020.07.22
타입변환과다형성  (0) 2020.07.22
Comments