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

1. 추상 클래스

class앞에 abstract 키워드를 사용하여 정의하고 하나 이상의 추상 메소드를 가지는 클래스를 말한다.
abstract로 선언된 추상 클래스는 상속을 위한 클래스이기 때문에 new 키워드를 통해 직접 객체를 생성할 수 없다는 특징이 있다.
또한 java에서는 다중 상속을 지원하지 않기 때문에 여러 개의 추상 클래스를 상속할 수는 없다.

인터페이스와 다르게 static이나 final이 아닌 필드를 가질 수 있고, public protected, private 접근 제어자를 모두 사용할 수 있다.

2. 인터페이스

인터페이스는 interface키워드를 사용하여 선언하는 인터페이스는 상수(static final)와 추상 메서드(abstract method)의 집합이다.
인터페이스는 추상 클래스보다 추상화 정도가 높으며 추상 클래스와는 다르게 구현부가 있는 일반 메서드, 일반 멤버 변수를 가질 수 없다는 특징이 있다.

인터페이스의 모든 메서드는 public abstract로 선언해야 하며, 이를 생략할 수 있다. 또한 모든 멤버 변수는 public static final로 선언해야 하며, 마찬가지로 이를 생략할 수 있다.

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

이 둘의 공통점은 메서드의 선언만 있고, 구현 내용이 없다는 것이다.
new 키워드를 통해 객체를 생성할 수 없으며, 상속받은 클래스가 반드시 선언된 추상 메서드를 구현하도록 해야한다.

차이점으로는 추상 클래스는 extends 키워드를 사용하여 상속하며, 다중 상속은 불가능하다.
반면 인터페이스는 implements 키워드를 사용하여 상속하며, 다중 상속이 가능하다.

또 추상 클래스는 일반 변수, 생성자, 일반 메서드, 추상 메서드를 모두 가질 수 있는 반면 인터페이스는 상수와 추상 메서드만 가질 수 있고, 생성자와 일반 변수는 가질 수 없다.

개념적 차이점이 아니라 내가 듣고 이해한바로 보면
둘의 순서가 다르다고 생각한다.

추상 클래스는 클래스들을 먼저 만들고 그에 대한 공통적인 부분들을 모아서 추상화 시켜놓은 것이라고 생각된다.
반면 인터페이스는 필요한 기능들을 먼저 모아 놓고 이에 대한 구현을 하는 것이라고 생각된다.

'개념정리' 카테고리의 다른 글

API란?  (0) 2023.08.16
프로세스와 쓰레드의 차이점  (0) 2023.08.08
객체지향 4가지 특징과 5가지 원칙  (0) 2023.08.08
AWS EC2 SWAP메모리 설정하기  (0) 2023.08.07
Rest API란  (0) 2023.08.04

+ Recent posts