추상 메소드와 인터페이스 (Abstract and Interface)
1.공통점
추상클래스와 인터페이스는 선언만 있고 구현 내용이 없는 클래스
자기 자신이 new를 사용하여 객체 생성 불가능
추상 클래스를 extends 받거나, interface를 implements 한 자식만이 객체를 생성할 수 있다.
상속 받은 자식이 구현을 반드시 하도록 해야할 때 사용
2.차이점
추상클래스:abstract 메소드가 하나라도 존재하는 클래스
인터페이스 : 구현체 없이 메소드에 대한 명세만 되어있음. 인터페이스서 상속받는 클래스에서는 반드시인터페이스에 있는 메소드를 다 구현해야함
자바의 default는 단일상속 추상 클래스도 단일 상속이다.
인터페이스는 implements를 구현하는 부분에서 extends또한 사용이가능하다 (다중상속이 가능)
'이러이러한 메소드를 쓸 것이다.' 인터페이스에 선언을 해놓고, 가져다가 반드시 선언된 그대로 모두 구현하면 되는게 인터페이스이고,
이러이러한 메소드가 있지만 가져다 쓰거나 오버라이드 하거나, abstract가 붙은 메소드는 반드시 구현하면 되는게 abstract class이다.
interface : 동물
method : 먹는다, 걷는다, 잔다
구현체(implement) : 고양이, 원숭이, 병아리
인터페이스는 다형성의 개념이 적용된다.
모든 동물은 먹고 걷는다, 하지만 동물들은 걷는방식이 다르고
구현체에서는 각각의 동물의 먹고 걷는 방식을 구현한다. 즉 동물마다 여러 가지 형태로 구현될수 있으므로 다형성.
추상클래스는 상속 ==> 즉 부모 자식 관계라고 볼 수 있다.
부모 클래스가 가지고 있는 내용을 상속받으면서 기능을 더 추가하거나
아니면 부모클래스의 기능을 수정할 때 사용한다.
'Coding > Java' 카테고리의 다른 글
Map- HashMap,TreeMap,LinkedHashMap 비교하기 (0) | 2019.11.13 |
---|---|
Set ->hashset, treeset, linkedhashset, sortedset (0) | 2019.11.13 |
List -> ArrayList,LinkedList,Vector (0) | 2019.11.13 |
JAVA 기본형과 참조형 (0) | 2019.11.13 |
GIT 과 SVN의 차이 + Git의 Rebase와 Merge (0) | 2019.11.13 |