2021. 11. 16. 21:46ㆍ[JAVA]
추상클래스란?
일반적으로 Java에서 클래스는 2가지로 구분된다. (일반 클래스와 추상 클래스)
추상 클래스는 0개 이상의 추상메소드(아직 구현되지 않은 자식이 구현할)를 가지고, 일반 메소드, 일반 변수 또한 가질 수 있다.
그렇기에 인터페이스 역할도 하면서, 구현체도 가지고 있는 돌연변이 같은 클래스이다.
선언 시 키워드는 abstract 키워드를 사용한다.
- 추상클래스는 인스턴스화 할 수 없다.
즉 추상클래스는 상속을 의미함으로써 물려주는 개념이 된다. 그렇기에 부모-자식 관계인 계층 구조를 나타낸다.
abstract class Animal {
abstract void bark();
void feed(){
}
}
인터페이스란?
인터페이스는 쉽게 말하면 껍데기라고 말할 수 잇고, 설계도 또는 명세서라고 할 수 있다.
모든 메소드가 추상 메소드이고 일반 변수를 가질 수 없다.
그 의미는 인터페이스를 구현한 클래스는 모든 메소드를 강제적으로 구현해야 한다.
- 인터페이스도 인스턴스화 할 수 없다.
interface Vehicle {
abstract void run();
abstract void move();
}
추상클래스는 상속받기 위해 extends 인터페이스는 implements 키워드를 사용한다.
정리하자면
추상클래스는 말그대로 상속의 개념으로 물려주고 물려받는 개념으로 부모-자식 관계가 형성 된다.
그렇기에 override와 overload와 같은 다형성에 이점이 있고 겹치는 메소드는 부모에서 가져오면 되니 편리하다.
인터페이스는 상속 개념이 아닌 어떠한 동작을 위한 구현을 강제화 한다.
그렇기에 큰 프로젝트일 수록 인터페이스를 통해 많은 이점을 얻는다. ex) 사람이 해야할 행동을 인터페이스로 구현해놓으면 모든 개발자들이 사람클래스를 만들 때 인터페이스를 반드시 구현한다.
'[JAVA]' 카테고리의 다른 글
TDD란? - Test-Driven-Development (0) | 2022.01.28 |
---|---|
[JAVA ] Static이란? 정적 변수 정적 메소드에 관하여 (0) | 2021.11.17 |
[JAVA] String 문자열과 StringBuilder, StringBuffer의 비교 (0) | 2021.11.16 |
[Java] Java파일의 컴파일 과정 (0) | 2021.11.16 |
[Java] 직렬화(Serialization) (0) | 2021.11.16 |