반응형
추상화 클래스와 인터페이스의 공통점 / 차이점
1. 공통점
- abstract class(추상 클래스)와 interface 는 선언만 있고 구현 내용은 없는 클래스이다.
- new를 해서 객체를 생성할 수 없다.
- 추상클래스를 extends 또는, interface를 implements 한 자식만이 객체를 생성할 수 있다.
- 상속받은 자식은 추상클래스나 인터페이스를 구현해야한다.
(java에서는 type이 지정되있기 때문에 선언된 type과 자식의 type이 같아야만 한다.)
2. 차이점
- 추상클래스는 클래스이다.
- interface는 구현하기 전에 메소드에 대해 명세된 것이다.
(그래서 상속을 받음에도 불구하고 클래스에선 상속이라고 쓰지만 interface는 implemets(구현) 이라고 쓴다.)
추상클래스는 abstract 메소드가 하나라도 존재하는 클래스를 말한다.
때문에 일부는 구현된 메소드도 있고, abstract라고 붙어있는 메소드는 구현이 안되어있다.
추상클래스를 상속받는 클래스는 반드시 추상메소드를 구현해야한다.
때문에 필수적으로 구현해야할 메소드가 있을 때 추상클래스를 쓰게된다.
인터페이스는 구현체 없이, 메소드에 대한 명세만 되어있다.
인터페이스를 상속받는 클래스에서는 반드시 인터페이스에 있는 메소드를 다 구현해야한다.
자바는 단일상속을 지원하기 때문에 추상클래스는 단일상속이지만,
interface를 사용하게 되면, implements를 구현하는 부분에서 extends 또한 사용할 수 있다.
(다중상속이 가능!)해진다.
(이해 하기)
interface
이러이러한 메소드를 쓸 것이다.' 인터페이스에 선언을 해놓고, 가져다가 반드시 선언된 그대로 모두 구현하면 되는것
abstract class
이러이러한 메소드가 있지만 가져다 쓰거나 오버라이드 하거나, abstract가 붙은 메소드는 반드시 구현하면 되는게
반응형
'JAVA' 카테고리의 다른 글
[JAVA] static과 인스턴스(Instance) (0) | 2021.11.11 |
---|---|
ArrayList 정리 (0) | 2021.01.22 |
인터페이스 (Interface)/ 추상화 클래스와 인터페이스의 공통점 / 차이점 (0) | 2020.09.10 |
캡슐화 /getters and etters (0) | 2020.09.09 |
인터페이스 익명 구현 객체/ 다중 인터페이스/인터페이스 사용 (0) | 2020.09.08 |